位操作的奥妙(一)

对于一个短整型数a

短整型数为16位(最高位为符号位)

与操作的作用:

1、若是只想保留低8位(使得高字节全为0),进行的运算

只保留低8位其余变成0<=>a=a&[00000000 11111111]2=a&[037]8

 

或操作的作用:

2、若将a的低8位全变为1,高8位保持原状,进行的运算

将低8位变成1,其余保持原状<=>a=a|[00000000 11111111]2=a|[037]8

 

异或操作的作用:

3、将a的低4位翻转(0变成1 ,1变成0),进行的运算

一个数a某些位的翻转位应该要想到异或运算0^1=1, 1^1=0

将a的低4位翻转<=>a=a^[00000000 00001111]2=a^[017]8

右移操作与或的结合:

4、将原来右端4位移到最左端4位,进行的运算:

a=a>>4|a<<(16-4)

比如:

a=[1010 1101 0010 0100]2    =>最终目标为[0100 1010 1101 0010]2

a>>4  =>[0000 1010 1101 0010]2

a<<(16-4) =>[0100 0000 0000 0000]2

a>>4|a<<(16-4) =>[0100 1010 1101 0010]2