位(bit)运算
二进制
所谓二进制就是逢二进一 (0,1), 因为使用二进制只有 0, 1 两个数,简单,易于电子方式实现,同时,通过0,1 组合可以表示任意一个数.
☞二进制有三个重要的概念
1. 原码
用二进制来表示一个数,这个码就是原码.
1 ------> 原码
00000000 0000000 0000000 00000101 = 1*2
的零次方+0*2的一次方
+1* 2的二次方
=1+0+4=5
2. 负数的反码=它的原码符号位不变,其它位取反(0->1,1->0)
反码(正数的反码和它的原码一样 , 负数反码是符号位不变其它位取反)
补码(正数的补码和它的原码一样,负数的补码是它的反码+1)
举例
-1
-1的原码 10000000 00000000 00000000 00000001
-1的反码 11111111 11111111 11111111 11111110
-1 的补码 11111111 11111111 111111111 11111111
3. 在计算机运算的时候,都是以补码的方式来运算的
4+5=>计算机 4-5=4+(-5)
这句话意思就是,不管一个数是正数还是负数,都要被转成补码,然后进行运算.
位运算一览表
<IGNORE_JS_OP>

该图的前面四个是位运算
其运算规则是:
按位与& : 两位全为1,结果为1
按位或| : 两位有一个为1,结果为1
按位异或 ^ : 两位一个为0,一个为1,结果为1
按位取反 : 0->1 ,1->0
看看前面给出的题,是否完成
~2=?
步骤:首先要求出 2
的补码
2是正数所以原码
=反码
=补码
2 原码
00000000 00000000 00000000 00000010
~2
11111111 11111111 11111111 11111101 (补码)->原码
? 负数的原码-》反码-》补码
11111111 11111111 11111111 11111101->
推出其反码 (对补码-1)
11111111 11111111 11111111 11111100
推出原码