2013年5月19日日曜日

PIC C18 メモ (ビット操作)

-----------------------------
指定ビットのみ反転する
-----------------------------
以下は、簡略化のため 4bit で表現

対象ビット列 dest: 0001
指定ビット   mask: 0010

 0001 0001
&1101 &0010
----- -----
 0001 0000
   ~0010
   -----
    0010


 0001
~0010
-----
 0011


式で表すと
dest=( dest & ~mask ) | ((dest & mask) ~mask)

~(チルダ)は、各ビットを反転させる
!(エクスクラメーション)の、「否定」とは違うので注意

-----------------------------
ビット反転と負数(2の補数)
-----------------------------
 a(HEX)= FC FD FE FF 00 01 02
 a(DEC)= -4 -3 -2 -1  0  1  2

~a(HEX)= 03 02 01 00 FF FE FD
~a(DEC)=  3  2  1  0 -1 -2 -3


反転しただけでは、ゼロの位置が移動してしまう。・・・・・+1すると負数になる(2の補数)

2008.01.16