在计算机中,为啥负数要用补码的形式表示呢?(图文并茂版)
Posted 温柔且上进c
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在计算机中,为啥负数要用补码的形式表示呢?(图文并茂版)相关的知识,希望对你有一定的参考价值。
原码、反码、补码形式的介绍
符号位
•在标准计算机中规定,把内存最高位作为符号位,且最高位为0表示正数,为1表示负数
原码
•原码:一种计算机对数字的二进制表示方法,并带有符号位(最高位为0表示正数,为1表示负数)
如 00000000 00000000 00000000 00000111 是 7 的原码
如 10000000 00000000 00000000 00000111 是 -7 的原码
注意:
•0的原码有两种表示方法,+0,-0都为0的原码
如 00000000 00000000 00000000 00000000 是 0 的原码
如 10000000 00000000 00000000 00000000 是 0 的原码
反码
•正数的原码、补码、反码是相同的!!!
如 00000000 00000000 00000000 00000111 是 7 的原码
如 00000000 00000000 00000000 00000111 是 7 的反码
如 00000000 00000000 00000000 00000111 是 7 的补码
•将二进制数按位取反
即可得到负数的反码
如 10000000 00000000 00000000 00000111 是 -7 的原码
如 11111111 11111111 11111111 11111000 是 -7 的反码
•只有负数的反码为按位取反,正数的反码与原码相同!!!
补码
•负数的补码为:将负数的二进制按位取反后得到反码,再反码+1,即可得到负数的补码
•正数的补码与原码相同!!!
如 10000000 00000000 00000000 00000111 是 -7 的原码
如 11111111 11111111 11111111 11111000 是 -7 的反码
如 11111111 11111111 11111111 11111001 是 -7 的补码
•通过上述对原码、反码、补码的了解,接下来我们将解释为啥在计算机中,负数要以补码的形式表示,首先我们需要了解算数中模
的概念
什么是模数
In mathematics, modular arithmetic is a system of arithmetic for integers, where numbers “wrap around” upon reaching a certain value—the modulus (plural moduli).
模数的理解
•模数
是指一个计量系统的计数范围,例如时钟,水表盘等等,计算机本质上就是一个大型计算器,它也有一个计量的范围,即为计算机也存在模数
•如:时钟的计量范围是0~11,即模数为12
•如:64位的计算机的计量的范围是2^64
,即模数为2^64
•模数是计算器产生‘溢出’的量,它的值在计算器上表示不出来,计算器上只能表示出模的余数,例如:10的余数有0、1、2、3、4、5、6、7、8、9
补数
•假设当前时针指向十点,而当前准确时间是八点,将时间调整正确的方法有以下两种:
•一:逆时针拨动两个小时,即:10-2=8
•二:顺时针拨动十个小时,即:10+10=12+8=8
•在以模为12的系统中,减2和加10的效果是一样的,因此,凡是减2的运算都可以用加9来代替,对模数12来说,10与2互为补数(二者相加等于模)
•有上述可得出结论,即在一个有模的计量系统中,减一个数,等于加上它的补数
,从而达到将减法运算转换成加法运算的目的!!!
补码原理
•计算机上的补码就是算数里的补数,将减法化为加法运算
•设我们计算机是4位的,则其计量范围的模是:2^4 = 16,所以表示的范围为-8~7
。
•举例如下:
•以上计算机为例,请计算5 - 3
的值,将题中的减法运算转换成加法运算,因此需将5 -3
转换成加法计算:
# 上述理论可得,减一个数等于加上它的补数,所以
5 - 3
# 等价于
5 + (16 - 3) // 算术运算单元将减法转化为加法
# 用二进制表示上述式子则为:
0101 + (10000 - 0011)
# 等价于
0101 + ((1 + 1111) - 0011) # 10000=1111+1
# 等价于
0101 + (1 + (1111 - 0011)) # 结合律,将后两个数结合
# 等价于
0101 + (1 + 1100) # 1111-0011 运算可得 1100
# 等价于
0101 + 1101
# 所以从上述可得:
-3 = 1101
# 即 `-3` 在计算机中的二进制表示为 `1101`
# 最后一步 0101 + 1101 等于
10010
•从上述题目可得,我们的计算机是 4 位的,计算结果为5位,第一位“溢出”了,所以我们只保存了 4 位,即 0010,而当计算机去读取这个值时,这正是我们所期望的 2
•上述就是计算机中减法的基本运算方法,将减法转换成加法,进行运算操作!!!!
以上是关于在计算机中,为啥负数要用补码的形式表示呢?(图文并茂版)的主要内容,如果未能解决你的问题,请参考以下文章