sql >> データベース >  >> RDS >> Mysql

バージョン5.0.3以降のmysqlテーブルの10進フィールドに負の数を格納する

    私が理解していることから、ドキュメントにはリテラルは保存されないと書かれています "-"文字 、これはおそらく、他の符号付きINTEGERフィールドが常に行っていたことを実行しており、代わりに負の数を示す符号ビットを格納していることを意味します。

    数値の前にマイナス記号が表示されているのは、その符号ビットの結果としてMySQLによって生成されているためです。

    符号ビットがわからない場合は、符号付きバイトが-128〜127の数値を格納し、符号なしバイトが0〜255の数値を格納する方法を検討できます。これは、符号付き数値の8ビットの1つが+/-(1は負、0は正)を格納するために使用され、残りのビットは最大2 ^ 7(-128または127)の数値を提供します。

    したがって、たとえば、ビット1111に符号ビットがある場合は-7(負の+ 4 + 2 + 1)になりますが、符号なしの場合は15(8 + 4 + 2 + 1)になります。保存されているビット数は同じです。

    符号付き数値の負の境界が8番目のビットを使用できるのに、正の境界は7ビットの合計(8番目のビットより1少ない)に制限されているのはなぜか疑問に思われるかもしれません。これは、10000000が負と8番目のビットの両方であると見なされるためです。これは、-0の表現が0を表す00000000と重複しているためです。負のゼロと正のゼロの区別がないため、負の最上位ビットは常に値です。そのビット自体の(しかし負の)。




    1. MySQLエラー1005?

    2. SQLServerの動的ピボット列

    3. EclipseでGlassfishサーバーを手動で構成する方法

    4. 中規模および大規模の結果セットでのHibernate、JDBC、およびJavaのパフォーマンス