原码、反码、补码的计算_补码原码反码怎么转换

(5) 2024-08-05 18:12

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
原码、反码、补码的计算_补码原码反码怎么转换,希望能够帮助你!!!。

原码、补码、反码的概念以及位运算

  • 原码、补码、反码的概念以及位运算
    • 1 原码、补码、反码
      • 1.1 原码组成
      • 1.2 反码
      • 1.3 补码
      • 1.4 总结
    • 2 位运算
      • 2.1 按位与&
      • 2.2 按位或|
      • 2.3 按位异或^
      • 2.4 右移运算>>
      • 2.5 左移运算<<

原码、补码、反码的概念以及位运算

1 原码、补码、反码

1.1 原码组成

机器数是一个数在计算机中的二进制表示形式,机器数是带符号的,在计算机中用一个数的最高位(第一位)存放符号, 正数为0, 负数为1。例如1(带符号即+1)在计算机中的最终表示形式为 0000 0001,依此类推-1的二进制为 1000 0001。这种表示方式又叫做原码,其中0的原码为0000 0000。
注:为什么 10000 0001 而不是 0001,在计算机中最小的存储单位是字节,1个字节占8位

1.2 反码

如果是正数,反码和原码是一样的,也就是1的原码是0000 0001,它的反码也是0000 0001.

如果是负数,反码就是在原码的基础上保持符号位不变,其它依次取反,因为-1的原码是 1000 0001,所以它的反码是 1111 1110

1.3 补码

如果是正数,补码和原码是一样的,也就是1的原码是0000 0001,它的补码也是0000 0001.

如果是负数,补码就是在反码的基础上加1,因为-1的原码是 1000 0001,它的反码是 1111 1110,所示它的补码是1111 1111。

1.4 总结

正数的原码、反码、补码都是一样的。

0的原码、反码、补码都是0000 0000。

负数的反码符号位表示符号的值不变,其它取反,补码在反码基础上加1。
注:计算机中的运算都是以补码的形式参与运算的!!!!!

2 位运算

计算机中的运算都是以补码的形式参与运算的!

2.1 按位与&

按位与运算规则是:相同位都为1,则为1,否则为0。
举个例子:

例1:计算1&3的值是多少?
1的原码是0000 0001,补码为0000 0001
3的原码是 0000 0011,补码为0000 0011
通过上面的规则只有最后一位都是1(补码参与运算,后同),所以最后的结果是 0000 0001,原码也是0000 0001,也就是1,即1&3=1。
我们通过代码展示:

func main() { 
    a, b := 1, 3 println(a & b) } 

程序最终输出结果是1。

例2:计算-1&3的值是多少?
-1原码是1000 0001,反码是1111 1110,补码是1111 1111。3的原码、反码、补码都是0000 0011。由于最后两个都是1,所以结果是 0000 0011,原码也是0000 0011,即为3。

2.2 按位或|

按位或的运算规则是:只要有一个为1,则为1,否则为0。
举例:
例1:1|3结果是多少?
1的补码是0000 0001,3的补码是0000 0011,所示结果为0000 0011,原码为0000 0011,即为3。
代码:

func main() { 
    a, b := 1, 3 println(a | b) } 

例2:-1|3的结果是多少?
-1的补码是:1111 1111,3的补码是 0000 0011,所以结果是为1111 1111,原码为1000 0001,即为-1。

2.3 按位异或^

按位异或的规则是:相同位相同则为0,不同则为1.
举例:
例1:1^3是多少?
1的补码是0000 0001,3的补码是0000 0011,结果是0000 0010,对应的原码是0000 0010,即为2。
例2:-1^3的结果是多少?
-1的补码是:1111 1111,3的补码是 0000 0011,所以结果是为1111 1100,原码为1000 0100,即为-4。

2.4 右移运算>>

右移运算的规则是:低位(0)补齐,用符号位补移出的高位(1)。
举例:
例1:1>>5是多少?
1的补码是0000 0001,右移5后为,0000 0000,符号位是0,补最后一个1,结果还是 0000 0000,即0。
例2:3>>1是多少?
3的补码是0000 0011,右移1后为,0000 0001,符号位是0,补倒数第二个1,结果是 0000 0001,即1。

2.5 左移运算<<

左移运算的规则是:符号位不变
举例:
例1:-1<<5是多少?
-1的补码是1111 1111,左移5是1110 0000,补码是1101 1111原码是1010 0000,即-32。
例2:3<<1是多少?
3的补码是0000 0011,左移1后为是0000 0110,原码是 0000 0110,即6。
例3:3<<6是多少?
3的补码是0000 0011,左移1后为是0000 1100 0000,原码是 0000 1100 0000,即192。

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

上一篇

已是最后文章

下一篇

已是最新文章

发表回复