位运算符
运算符 | 符号 | 含义 | 例子 |
---|---|---|---|
与 | & | 两边都为真时为真 | 1&1 =1 |
或 | | | 任何一边为真时为真 | 1 |
~ | 非 | 取反 如果1则为0 如果0为1 | ~1 = 0 |
^ | 异或 | 两边相同为1 两边不同为0 | 1<>1返回false 1<>2返回true |
逻辑运算符
运算符 | 符号 | 含义 | 例子 |
---|---|---|---|
逻辑与 | && | 判断两边 都为真时为真 | true&&true =true |
或 | || | 判断两边 任何一边为真时为真 | true |
计算
1000 1100 | |
---|---|
0011 1110 | |
^ | 00001101 |
& | 00001100 |
| | 10111110 |
进制转十进制
10000001 = 1*2^0 +...+ 1*2^7=257
11111111 = 1*2^0+.....+1*2^7 = 128+64+32+16+8+4+2+1
有符号数的原码、补码、反码的第一位是0表示正数,1表示负数
如果是无符号数,那就不表示符号,也作为数据位
如果是移码,第一位是0表示负数,是1表示正数
<<:左移运算符,num << 1,相当于num乘以2
>>:右移运算符,num >> 1,相当于num除以2
>>>:无符号右移,忽略符号位,空位都以0补齐
1.左移运算符
在二进制数运算中,在信息没有因移动而丢失的情况下,每左移1位相当于乘2。如4 << 2,结果为16。
2.右移运算符
与左移相反,对于小整数,每右移1位,相当于除以2。在右移时,需要注意符号位问题。对无符号数据,右移时,左端空出的位用0补充。对于带符号的数据,如果移位前符号位为0(正数),则左端也是用0补充;如果移位前符号位为1(负数),则左端用0或用1补充,取决于计算机系统。对于负数右移,称用0 补充的系统为“逻辑右移”,用1补充的系统为“算术右移”。