WGC1 第2章数値表現 2.6 2進値の便利な特性
- (整数の)2進値で、ビット番号0のビットが1であればその数値は奇数であり、0であればその数値は偶数である
- 2進値のLOのnビットがすべて0であれば、その数値は2^nで割り切れる
- 符号なし2進値のビット番号nのビットが1で、それ以外のビットがすべて0であれば、その数値は2^nに等しい
%1000=2^3=8
- 2進値のビット番号0からn(n番のビットは除く)までのビットがすべて1で、それ以外がすべて0であれば、その値は2^n -1 に等しい
%0111=2^3 -1=7
n番のビットは除くというのがよくわからんな。n番のビットを除かず、2^n +1ではだめなのかな?
- 2進値のすべてのビットを左に1つシフトすると、元の値の2倍になる
%0010_0000 = $20 = 32 %0100_0000 = $40 = 64
- 符号なし2進値のすべてのビットを右に1つシフトすると元の値の1/2になる。(符号付整数値には当てはまらない。)奇数の場合は、余りが切り捨てられる
%0011_1000 = $38 = 56 %0001_1100 = $1C = 28 %0011_1001 = $39 = 57 %0001_1100 = $1C = 28
- nビットの2つの2進値を掛け合わせると、結果の値を格納するのに最大で2×nビット必要になる
- nビットの2つの値を加算または減算した場合、結果の値を格納するのにn+1よりも多くのビットが必要になることはあり得ない
- 2進値のすべてのビットを反転すると、値の符号を反転し、その値から1を引くのと同じことになる
%0000_0101 5 %1111_1010 -6 %0000_0110 6 %1111_1001 +1 %1111_1010 -6
- 特定のビット数で表現可能な、符号なし2進値の最大値をインクリメントするとかならず0になる
- 0をデクリメントすると、必ずそのビット数で表現可能な符号なしの2進値の最大値にな
- nビットを使った一意なビットの組み合わせは2^n通りある
- 2^n -1の値はすべての1であるn個のビットで表現される
%1111_1111 = 2^8 -1 = 255 = $FF = 15*16+ 15= 255