位运算复习
二进制表示
2:00000010
4:00000100
8:00001000
二进制转十进制
1101(2)=12的0次方+02的1次方+12的2次方+12的3次方=1+0+4+8=13(10)
0.01(2)=02的-1次方+12的-2次方=0+0.25=0.25(10)
规则:从右到左用二进制的每个数去乘以2的相应次方
十进制转二进制
A.十进制整数 14=00001110,789=1100010101
14/2=7 余0
7 /2=3 余1
3 /2=1 余1
1 /2=0 余1
规则:十进制整数除以2,得到商和余数,再用商除以2,又得到商和余数,如此进行,直到商为0为止,然后把余数倒序排列
B.十进制小数 0.8125=0.1101
0.8125*2=1.625 整数部分1
0.625 *2=1.25 整数部分1
0.25 *2=0.5 整数部分0
0.5 *2=1.0 整数部分1
规则:十进制小数乘以2,得到积,将积的整数部分取出,小数部分继续乘以2,又得到一个积,如此进行,直到积中的小数部分为零
运算对象类型:整型,字符型
结果类型:整型
或运算
00000001 | 00000001 = 00000001
00000001 | 00000000 = 00000001
00000000 | 00000000 = 00000000
运算规则:1或1等于1,1或0等于1,0或0等于0
示例:00000100 | 00001000 = 00001100
与运算
00000001 & 00000001=00000001
00000001 & 00000000=00000000
00000000 & 00000000=00000000
运算规则:1与1等于1,1与0等于0,0与0等于0
示例:00000100 & 00001000 = 00000000
场景:权限
k1=2; //添加
k2=4; //删除
k3=8; //修改
组合权限时,按位或
myLimit=k1|k3; //赋予添加和修改权限
权限串中是否包含某一权限时,按位与
if((myLimit & k2)>0){
//有删除权限的代码
}
补充:
非运算
运算规则:如果某一位等于0,则将其转变为1;如果某一位等于1,则将其转变为0
示例:~10010001=01101110
异或运算
运算规则:1异或1等于0,1异或0等于1,0异或0等于0,即:相同得0,相异得1
示例:10010001^11110000=01100001
左移运算
运算规则:将整个数按位左移若干位,左移后空出的部分填0
示例:左移3位 01100101<<3=00101000
右移运算
运算规则:将整个数按位右移若干位,右移后空出的部分填0
示例:右移3位 01100101>>3=00001100

浙公网安备 33010602011771号