美文网首页
计算机补码计算的理解

计算机补码计算的理解

作者: 2018奎 | 来源:发表于2017-12-01 16:45 被阅读0次

1,熟悉几个概念:原码、反码、补码

原码:

最高位表示符号位,其它表示具体数值,原码示例如下:

[+2]10 = [0000 0010]
[- 1]10 = [1000 0011]


反码:

正数的反码是其本身,负数的反码符号位不变,其余按位取反:

[+2]10 = [0000 0010] = [0000 0010]
[- 3]10 = [1000 0011] = [1111 1100]


补码:

正数的补码是其本身,负数的补码是在反码的基础上加1:

[+2]10 = [0000 0010] = [0000 0010] = [0000 0010]
[- 3]10 = [1000 0010] = [1111 1100] = [1111 1101]


小结:正数的补码是其本身,负数的补码是反码加1.

2,相关数学原理

  • [A] = [[[A]]]
  • [Z] = [X+Y] = [X] + [Y]

3,推导演算

以2-3为例:

[2-3] = [[[2+(-3)]]]
= [[[2]+[-3]]]
= [[[0000 0010]+ [1111 1101]]]
=[[1111 1111]]
=[1000 0001]


4,扩展理解

补码的符号既然参与运算,机器字长为8的符号位表示数值是27=128。
我们就用10进制来增强理解,假设符号位表示100,有效操作数取值区间[-100,100)

计算:89 - 72
模拟补码运算:89 - (100 -28)= 89+28-100 =17 +100 -100
89+28溢出产生一个符号位和真值17,两个符号位抵消
计算结果为17,符号位是0,真值也是17

计算:72 - 89
模拟补码运算:72 - (100 - 11)=72 + 11 - 100 = 83 - 100
72+11没有溢出没有产生符号位,真值为83
计算结果为83,符号位是1,真值便是83-100 = -17

二进制进行补码运算也是一样的原理

计算:2-3 = [0000 0010]-[0000 0011]
补码运算:
=[0000 0010]-([1000 0000]-([1000 0000]-[0000 0011]))
=[0000 0010]-([1000 0000]-[0111 1101])
=[0000 0010]+[0111 1101]-[1000 0000]
=[0111 1111]-[1000 0000]
=值+符号位
=[1111 1111]
这样真值便是:[0111 1111]-[1000 0000] = 127-128=-1
[1000 0000]-[0000 0011]:这个操作等价于取真值部分的“补码”,这个要仔细体会下

5,总结

1,计算机采用补码运算让计算电路简单高效,只处理加法操作,而不用理会减法
2,以补码的方式存储在计算机中,可以直接读取进行加法操作,补码可以区分原码不能区分的0和-0。补码的-0代表的是-128

第一次写文章,欢迎大家指点,拍砖。

相关文章

  • 计算机补码计算的理解

    1,熟悉几个概念:原码、反码、补码 原码: 最高位表示符号位,其它表示具体数值,原码示例如下: [+2]10 = ...

  • Python位运算

    计算机中有原码,反码,补码的概念。计算机只能储存数字数据,而且是数字的补码,运算时也通过补码,因为计算机中只有加法...

  • 位运算

    1.原码、反码、 补码正数的原码、反码、 补码都一样 正数以原码存储在计算机负数 以补码存储在计算机 例...

  • 计算机中二进制补码的运算原理

    在计算机中负数以补码形式表示,计算负数补码的方法是符号位不变,其余位按位取反再加1。简言之,补码是计算机中用来表示...

  • 原码、反码、补码

    数值在计算机中是以补码的方式存储的,在探求为何计算机要使用补码之前, 让我们先了解原码, 反码和补码的概念。 对于...

  • 原码、反码、补码

    数值在计算机中是以补码的方式存储的,在探求为何计算机要使用补码之前, 让我们先了解原码, 反码和补码的概念。 对于...

  • 原码,反码,补码

    数值在计算机中是以补码的方式存储的,在探求为何计算机要使用补码之前, 让我们先了解原码, 反码和补码的概念。 对于...

  • 原码,反码,补码

    数值在计算机中是以补码的方式存储的,在探求为何计算机要使用补码之前, 让我们先了解原码, 反码和补码的概念。 对于...

  • 计算机为什么需要反码,补码?

    计算机为什么需要反码,补码?

  • Java中高位转低位溢出的计算过程

    结果是: 计算机中是以补码进行计算 正数的反码补码都是原码,如:10原码: 1010反码: 1010补码:1010...

网友评论

      本文标题:计算机补码计算的理解

      本文链接:https://www.haomeiwen.com/subject/xseibxtx.html