计算机中的负数是以其补码形式存在的 补码=原码取反+1
一个字节有8位补码的最小负数 可以表示的数值范围在 -128到+127
用二进制表示也就是 10000000 - 01111111(注意:最高位表示符号)
最高位是1的都是负数 最高位是0的都是正数
如-7 原码是 10000111 然后取反(最高位是符合不用取反)得11111000
加一 得11111001 那么-7的二进制数就是 11111001
再如 -10 原码是 10001010 取反得 11110101 加一得 11110110
那么-10的二进制数就是 11110110
二进制数是逢二进一 只有0和1两个数字 没有2
一个字节有8位补码的最小负数 可以表示的数值范围在 -128到+127
用二进制表示也就是 10000000 - 01111111(注意:最高位表示符号)
最高位是1的都是负数 最高位是0的都是正数
如-7 原码是 10000111 然后取反(最高位是符合不用取反)得11111000
加一 得11111001 那么-7的二进制数就是 11111001
再如 -10 原码是 10001010 取反得 11110101 加一得 11110110
那么-10的二进制数就是 11110110
二进制数是逢二进一 只有0和1两个数字 没有2
补 码 表 示
由于原码表示中0的表示形式的不唯一和原码加减运算的不方便,造成实现原码加减运算的硬件比较复杂.为了简化运算
让符号位也作为数值的一部分参加运算,并使所有的加减运算均以加法运算来代替实现,人们提出了补码表示方法.
1 . 模 的 概 念
由于原码表示中0的表示形式的不唯一和原码加减运算的不方便,造成实现原码加减运算的硬件比较复杂.为了简化运算
让符号位也作为数值的一部分参加运算,并使所有的加减运算均以加法运算来代替实现,人们提出了补码表示方法.
1 . 模 的 概 念
补码表示的引入是基于模的概念. 所谓"模"是指一个计数器的容量,比如钟表以12为一个计数循环,既可以看做以12
为模.在进行钟表对时时,设当前钟表的时针停在 9 点钟位置,要将时针拔到4点钟.可以采用两种方法: 一是反时针方向
拔动指针,使时针后退5个小时,即 9 - 5 = 4 ; 另一种是顺时针方向拔动指针,使时针前进7个小时,也能够使时针指向
4. 这是因为表钟的时间只有 1,2,.....,12 这12个刻度,时针指向超过12时,将又指向1,2,........,相当于每超
过12,就把12丢掉. 由于9+7=16,超过了12,因此把12减掉后得到4, 即用 9+7 也同样能够将表钟对准到4点钟. 这样,
对于采用12为模的钟表而言, 9-5 ≡ 9+7 ( mod 12 ) ,称为在模12的条件下,9-5等于9+7. 这里, 7 称为 -5 对 12
的补数, 既 7 = [-5]补 = 12 + (-5) (mod 12) . 这个列子说明,对某一个确定的模而言,当需要减去一个数X时
,
可以用加上 X 对应的负数 -X 的补数 [-X] 补来代替.
对于任意X,在模M的条件下的补数[X]补,可由下式给出:
[X]补 = M + X (mod M)
根据公式:
1.当 X>=0 时, M+X大于M,把M丢掉,得[X]补=X,既正数的补数等于其本身.
2.当 X<0 时 ,[X]补=M+X=M-|X|,既负数的补数等于模与该数绝对值之差.
例: 求模M=2时,二进制数X的补数
(1)X=+0.10110101 (2)X=-0.10110101
解: (1)因为X>=0,把模2丢掉,所以 [X]补 = 2+X = 0.10110101 (mod 2)
(2)因为X<0 ,所以 [X]补 =2+X
=2-|X|
=10.00000000-.010110101
= 1.01001011(mod 2)
对于任意X,在模M的条件下的补数[X]补,可由下式给出:
[X]补 = M + X (mod M)
根据公式:
1.当 X>=0 时, M+X大于M,把M丢掉,得[X]补=X,既正数的补数等于其本身.
2.当 X<0 时 ,[X]补=M+X=M-|X|,既负数的补数等于模与该数绝对值之差.
例: 求模M=2时,二进制数X的补数
(1)X=+0.10110101 (2)X=-0.10110101
解: (1)因为X>=0,把模2丢掉,所以 [X]补 = 2+X = 0.10110101 (mod 2)
(2)因为X<0 ,所以 [X]补 =2+X
=2-|X|
=10.00000000-.010110101
= 1.01001011(mod 2)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论