1バイトで符号付き整数を表す
混乱しそうだったのでメモ書きです。(特に-128絡み)
1byteはいわずと知れた8bitsです。
つまりは0か1が8個連なった2進数です。00000000みたいな。
この1byteで表せる符号付き整数は-128~127という範囲内です。
上位1ビットから下位8ビットの数の割り当ては以下の通り
[1] -128
[2] 64
[3] 32
[4] 16
[5] 8
[6] 4
[7] 2
[8] 1
例
1~127に限っては、ビット反転して1を足せば絶対値が同じ負の数に変換できます。
例
ビット同士の足し算(注:OR演算ではない)を行えば10進数で足した結果と同じになります。
てな感じ。
【広告】
1byteはいわずと知れた8bitsです。
つまりは0か1が8個連なった2進数です。00000000みたいな。
この1byteで表せる符号付き整数は-128~127という範囲内です。
上位1ビットから下位8ビットの数の割り当ては以下の通り
[1] -128
[2] 64
[3] 32
[4] 16
[5] 8
[6] 4
[7] 2
[8] 1
例
2進数で
10010111
の場合は、
(1 x -128) +
(0 x 64) +
(0 x 32) +
(1 x 16) +
(0 x 8) +
(1 x 4) +
(1 x 2) +
(1 x 1)
つまりは
-128 + 16 + 4 + 2 + 1
だから
10進数では
-105
1~127に限っては、ビット反転して1を足せば絶対値が同じ負の数に変換できます。
例
00000010 #これは2です
↓ ビット反転する
11111101
↓ 1を足す
11111110 #これが-2です
ビット同士の足し算(注:OR演算ではない)を行えば10進数で足した結果と同じになります。
10010111 (-105)
+00101100 (44)
----------------
11000011 (-61)
てな感じ。
【広告】