02/04/21 23:21
>>160
ビットシフト(<<,>>)や論理演算(&,|,^)を使います。
例えば、10進数「38725」は2進数で表すと「1001011101000101」です。めんどいので16ビットだけね。
まず、1番下の8桁を取り出す場合は「a=38725&255」とします。ポイントは255で、2進数では「11111111」。さっきの式では
1001011101000101
0000000011111111 &(<-ズレるんでこっちに書きました)
で
0000000001000101 となります。論理演算子「&」は、両者が1だと1、それ以外だと0になるわけで。(1&1=1,1&0=0,0&1=0,0&0=0)
次にその上の8桁を取り出すときは、「a=38725>>8」とします。すると、2進数が右にずれて「1111111110010111」になるはず。右にズレるとき、存在しない桁が左に現れるわけですが、たしか1になるはず。0かも(符号無しintが0だった記憶)。
あとは、さっきと同じように「&255」すればok。