1.a+b spa
1 + 3
1:0001
3:0011
4: 0100
1|3:0011=3
无进位时a|b = a +b
有进位则不成立对象
计算思路:使用异或运算【不进位加法】忽略有进位的位置,再加上应该有的进位的位置。
因此咱们能够这样:若是咱们忽略有进位的位置后,再加上应该进位的位置,就是咱们的值。
1 ^ 3: 0010 =3; 忽略进位
加上进位:0010
0010 ^ 0010:0000 忽略进位
再加上进位:0100
0000^0100:0100=4二进制
0000&0100 为-0,没有须要继续进位d3
直到 没有应该进位的,最后结果即为返回值。计算机
延伸:co
位运算符: d3
| 按位或运算background
& 按位与运算符位运算
^ 异或运算运算符
~取反运算
<< 左移运算符 将一个运算对象的各二进制所有进行左移若干位(左边的二进制进行丢弃,右边补0),操做数每左移一位,至关于x2
>>右移运算符 将一个运算对象的各二进制所有进行右移若干位(正数左补0,负数左补1,右边丢弃),操做数每右移一位,至关于 /2
原码 反码 补码
求一个负数的二进制: 1.该负数的正数的二进制取反,而后加1。记为这个负数的二进制。
求 -14 >>2 的值
1. -14的二进制: 14的二进制取反,加一 获得 1111 0010
2.右移2位: 1111 1100
3.1111 1100 的值为: 1111 1100 原码为 【1111 1100 先取反 1000 0011 在加 1 1000 0100】1000 0100,数值为-4
在计算机中 二进制使用 补码表示。 补码的补码即为原码