计算机的,反码,原码,补码!求它们的计算方法
在计算机系统中,数值,一律用补码来表示和存放。
原码和反码,在计算机中,都是不存在的。
使用补码代表正负数值,可将负数,转换成正数来计算。
这就可以节省硬件,只用加法器,便可实现加减法运算。
补码,是是什么意思? 这得从【补数】谈起。
计算机所计算的位数,是固定的,如八位机。。。
位数限定之后,其计数范围,就有了周期性。
如两位十进制 0~99,周期就是 100(一百)。
那么,减一,就可以用 +99 代替:
25 - 1 = 24
25 + 99 = (一百) 24
舍弃进位,只取两位,这两种算法,功能就是相同的。
这就用正数,代替了负数! 用加法,就实现了减法运算!
99,就是-1 的补数。 计算公式:补数 = 周期 + 负数。
学过三角函数的同学,都知道,函数周期是:2π(360°)。
那么-90°,也可以+270° 来计算。 这也是同样的道理。
一个负角度,怎么计算出“等效的正角度”,大家都会。
-------------------------
计算机用二进制,补数,就改称为:补码。
八位二进制:0000 0000 ~ 1111 1111。
对应十进制:0 ~ 255。
计数周期是:2^8 = 256。
那么,
-1 的补码是 256 + (-1) = 255 = 1111 1111(二进制)。
-2 的补码是:254 = 1111 1110。
。。。
-128 的补码是:128 = 1000 0000。
用不存在的“原码反码取反加一”来求,也是这个结果。
求负数补码的计算公式,也是: 周期 + 该负数。
正数,也可以使用这个公式。但是,计算后,这个周期的数值,
超出了计数范围,就略去了。 最后,还是这个正数。
-------------------------
例如: 7-3 = 4。
用补码的计算过程如下:
7 的补码=0000 0111
-3的补码=1111 1101
--相加-------------
得 (1) 0000 0100 = 4 的补码
舍弃进位,只保留八位作为结果,就求出了 7-3。
-------------------------
原码和反码,在计算机中,都是不存在的,无用的。
它们不过是,计算机老师捧在手中的饭碗而已。
2022-05-15 广告
所谓原码就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
原码10010=
反码11101
(10010,1为符号码,故为负)
补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。
例如:
(1)
原码:在数值前直接加一符号位的表示法。
例如:
符号位
数值位
[+7]原=
0
0000111
B
[-7]原=
1
0000111
B
注意:a.
数0的原码有两种形式:
定点小数表示方法
[+0]原=00000000B
[-0]原=10000000B
b.
8位二进制原码的表示范围:-127~+127
换算:
[+7]反=
0
1111000
B
[-7]反=
1
1111000
B
[+7]补=
0
0000111
B
等于
[+7]原
[-7]补=
1
1111001
B
等于
[-7]反+
1
反码
和补码的目的就是为了解决减法问题,因为计算机cpu的运算器中只有加法器,要把减法转化成加法来计算。
举个例子,a表示十进制数“+16”,b表示十进制数“-19”,把这两个数的原码直接相加,得:
a=+16
(a)原=00010000
b=-19
(b)原=10010011
00010000
+
10010011
————
10100011
其结果符号位为1是负数,其数值位为100011,即等于十进制数“-35”,这显然是错的结果。
再比如,十进制数“+16”与“+19”的原码直接相减,得:
00010000
-
00010011
————
11111101
结果为“-125”,这又是错的。
但是引入补码后,加减法都可以用加法来实现,如“-16+11”的运算:
11110000
+
-16的补码
00001011
11的补码
————
11111011
-5的补码
如果是“-16-11”,那么就转化为加法运算“-16+(-11)”
11110000
+
-16的补码
11110101
-11的补码
————
111100101
-27的补码
在字长为8位的系统中,最高位所产生的进位被自然丢弃,运算结果的机器数为11100101,是-27的补码形式,结果正确。
顺便告诉你一些其它的东西:
1.二进制数中,两数的补码之和等于两数和的补码。
2.补码=反码+1
3.反码=原码除符号位外其它数值取反(即该数的绝对值取反),即“0”变“1”,“1”变“0”。
4.任何正数的原码
反码
补码的形式完全相同(即都是自身,不变)
5.在计算机中,有符号的数都是采用补码来表示的。
6.计算的时候,符号位也参与运算。