位运算及诸技巧
位运算概念:基于二进制的位的运算
对于位运算,注意两点:
1.必须以二进制角度进行位运算
2.必须以补码角度进行位运算
位运算符:
(1) 按位取反 ~
求~1
具体过程
1的补码为:
0000 0000 0000 0000
0000 0000 0000 0001(补)
按位取反:
1111 1111 1111 1111
1111 1111 1111 1110(补)
变为原码:
1000 0000 0000 0000
0000 0000 0000 0010(原)
读数: -2
计算机验证
int n = 1;
printf("%d\n",~n);
输出结果为:-2
(2) 按位与 &
求12 & 5
具体过程
12的补码为:
0000 0000 0000 0000
0000 0000 0000 1100(补)
5的补码为:
0000 0000 0000 0000
0000 0000 0000 0101(补)
12&5:
0000 0000 0000 0000
0000 0000 0000 0100(原、补)
读数:4
计算机验证
printf("%d\n",12&5);
输出结果为:4
(3) 按位或 |
求12|5
具体过程
12的补码为ÿ