位操作的奥妙(一)
对于一个短整型数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