-
位运算符
-
整数在内存中以二进制数的形式表示,如整型变量 7 以32位二进制数表示是
00000000 00000000 00000000 00000111
最高位是符号位,最高位是0表示整数,若为1则表示负数。
负数采用补码表示,如 -7 以32位二进制数表示为
11111111 11111111 11111111 11111001
-
位与 &
两个操作数的二进制数只有对应位都是1时,结果位才是1,否则为0。
如果两个操作数的精度不同,则结果的精度与精度高的操作数相同。
0000 0000 0000 1100
& 0000 0000 0000 1000
0000 0000 0000 1000
-
位或 |
两个操作数的二进制数只有对应位都是0时,结果位才是0,否则为1.
如果两个操作数的精度不同,则结果的精度与精度高的操作数相同。
0000 0000 0000 0110
| 0000 0000 0000 1010
0000 0000 0000 1110
-
位异或^
两个操作数的二进制数只有对应位相同(同时为0或同时为1)时,结果为0,否则为1。
如果两个操作数的精度不同,则结果的精度与精度高的操作数相同。
0000 0000 0001 1111
^ 0000 0000 0001 0110
0000 0000 0000 1001
-
取反~
-
讲操作数对应的二进制数中的1改为0, 1改为0。
- 0000 0000 0111 1011
1111 1111 1000 0100
-
左移位<<
将一个二进制操作数向左移动指定的位数,左边(高端位)溢出的位被丢弃,右边(低端位)的空位用0补充。
左移位运算相当于乘以2的n次幂。
48 00110000
96 01100000
192 11000000
-
右移位>>
将一个二进制操作数向右移动指定的位数,右边(低端位)溢出的位被丢弃,而在填充左边(高端位)的空位时,如果最位是0(正数),左侧空位填入0;如果最高位是1(负数),左侧空位填入1。
右移位运算相当于除以2的n次幂。
48 00110000
24 00011000
-80 10110000
-20 11101100
-
位运算简述
最新推荐文章于 2024-07-25 11:27:31 发布