为什么 补码的补码是原码??

cvrli 2011-01-20 08:41:35
为什么 补码的补码是原码??

请解释详细 明了??
...全文
5330 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
ywt451997432 2011-04-15
  • 打赏
  • 举报
回复
用代数带入消元法:

假设:

原码 = 01

因为:

补码 = 反码 + 1 = 10 + 1 = 11
补码的补码 = 11的补码 = 11的反码 + 1 = 00 + 1 = 01

所以:

补码的补码 = 原码
sdb134 2011-04-14
  • 打赏
  • 举报
回复
还没结贴,赶上了啊,!这个问题,我们老师讲得蛮多的。
这就要回到求补的过程了:
1.一个数求补X,当它为正数时,即为它本身
当它为负数时,用2^n-|x|,当再求补时,又用2^n-(2^n-|x|)=|x|,
加上前面的负号,即为它本身,
2.求补的另一种方法,也就我们常背的,符号位不变,其它位取反加1。
yhshion 2011-04-12
  • 打赏
  • 举报
回复
说的已经很明确了
[Quote=引用 2 楼 shzhfu 的回复:]
这句话严格地讲是有点问题的。

这里所说的“补码”实际上是“求补”---即“取相反数”的意思,“原码”则指它的绝对值了。

所以一个正数(比如是n)的“补码”是指用按位取反再加1的运算得到的数,其实就是它的相反数(-n)。这个(-n)的“补码”指再按位取反再加1,得到了(-n)的相反数,这便又是n了。
[/Quote]
wangzanzitong 2011-04-07
  • 打赏
  • 举报
回复
-128=10000000 只有7个0?
实际为00000000 8个0,1被自然丢失,因为一个字节是8位。
所以0就是代表负数的-128!!!
wangzanzitong 2011-04-07
  • 打赏
  • 举报
回复
补码的补码是原码
对于正数;正数的补码是它本身,它本身(正数的补码)的补码当然还是它本身。正数的补码规定就是等于原码,所以补码的补码是原码。
对于负数,-1原码=11 11补码=00+1=01(连同符号位一起求反再+1)
01再求补:01=10+1=11(连同符号位一起求反再+1)
11=11所以补码的补码是原码
猜想:只要输入为负数,1.用软件方法直接转换为补码形式(便于作减法运算,减法用加法做,加法器在cpu中为一个异或门电路)
2.不用软件方法,用硬件实现:遇到负数把负数各位(含符号位)送入一个反相器(按字长,实为多个相同的反相器)反相相当于取反。
yxinxin1989 2011-04-04
  • 打赏
  • 举报
回复 1
数学证明:
1.正数的补码的补码是原码不用说了,很简单
2下面说说为什么负数补码的补码是原码.
证明:设x(负数的原码)为n位,x按位取反加1得(求补)得到y,y按位取反加1得(求补)得到z.
问题就是证明x=y!
因为:x+y=2^n;y+z=2^n
于是必有:x=z
shzhfu 2011-04-04
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 night_dystar 的回复:]
正数的补码还是它本身,所以它补码的补码还是自己
负数的补码是将各个二进制位取反再加1,负数的补码的补码就相当于取反加1,再取反加1(),这样两次取反,一加一减,结果还是它本身。
[/Quote]

“对于二进制位运算,加1和减1是一样的”?能一样吗?

这样两次取反,一加一减,这两次取反可不是“取反后马上取反”,是“取反后加1再取反”,能和“取反再取反”等价吗?

另:为什么喜欢把这些很久的并且好多是已经有明确答案的帖子再翻出来?
xiaoD 2011-04-03
  • 打赏
  • 举报
回复
正数的补码还是它本身,所以它补码的补码还是自己
负数的补码是将各个二进制位取反再加1,负数的补码的补码就相当于取反加1,再取反加1(对于二进制位运算,加1和减1是一样的),这样两次取反,一加一减,结果还是它本身。
rapanda 2011-03-26
  • 打赏
  • 举报
回复
实践出真知,自己测试看看,不就明白了
Frog1228 2011-03-19
  • 打赏
  • 举报
回复
其实你可以举个例子,自己推导一下,就可以知道结果了,就跟数学上的代数法一样。如果形象一点地认识的话,可以认为是“负负得正”。
Frog1228 2011-03-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 linux_mary_me 的回复:]
好好看数电
[/Quote]
应该是微机原理吧。。。
runrising 2011-03-18
  • 打赏
  • 举报
回复
举个通俗易懂的例子,你见过家里的机械钟吧,小时的周期是12个小时,当现在2点时,你想把它调到5点,一种你是顺时针拨三个时刻,另一种是逆时针拨9个时刻,顺时针约定为-,逆时针为+,那么-3的补码就是=+9;补码的补码是原码,相当于反复播时针嘛,这样很通俗懂,希望你能理解
nitsunye 2011-03-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 cvrli 的回复:]
为什么 -128=10000000 如何算

在计算机真实运算
不要 讲取反加以模式
[/Quote]
n位二进制补码计算十进制值:-2的n-1幂+2的n-2幂+...+2的零次幂
nzk76 2011-03-17
  • 打赏
  • 举报
回复
类似数学集合中补集的概念,补集的补集是原集合。
用户 昵称 2011-03-15
  • 打赏
  • 举报
回复
心算一下就是了。
zjmcly 2011-03-12
  • 打赏
  • 举报
回复
你首先要知道补数的概念。补码的存在是为了方便计算机的加法运算。
goodider 2011-03-05
  • 打赏
  • 举报
回复
有公式的。还有你要找到个坐标图看就更清楚了。
fqrfans 2011-03-04
  • 打赏
  • 举报
回复 1

一个数设为x,则补码为~x+1
~[(~x)+1]+1=x
证明:~[(~x)+1}=x-1
(~x)+1=~(x-1);同时取反“~”
~x+1=~x+1;对于二进制成立
safish 2011-02-13
  • 打赏
  • 举报
回复
正数的原,反,补都是一样
负数的反码: 除最高的符号位(1)外, 其它数字全部取反,0变1,1变0
负数的补码: 负数的反码 + 1
yinviky 2011-01-22
  • 打赏
  • 举报
回复
正数的补码不是本身么?
加载更多回复(8)

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧