我在领扣作题——a+b

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

在计算机中 二进制使用 补码表示。 补码的补码即为原码

相关文章
相关标签/搜索