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
  1. nビットの2つの2進値を掛け合わせると、結果の値を格納するのに最大で2×nビット必要になる
  2. nビットの2つの値を加算または減算した場合、結果の値を格納するのにn+1よりも多くのビットが必要になることはあり得ない
  3. 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
















Randall Hyde、鵜飼 文敏、まつもと ゆきひろ、後藤 正徳、トップスタジオ