xznwood 发表于 2011-8-18 21:16:41

请教补码10000000的原码是多少啊,它表示多大呢?怎么算的

初学小甲鱼的汇编语言课程,讲的通俗易懂,太好了,对于补码这快我还是不太理解,想问一下:
补码10000000的原码是多少啊,还是10000000吗,补码10000000的大小表示多少啊,是-128吗,
最高位不是符号位吗?怎么能参与计算呢,我搞糊涂了,求教,不知道甲鱼老师能指点一下不

prince2008csfk 发表于 2011-8-18 22:41:20

好啊 谢谢了呵呵

prince2008csfk 发表于 2011-8-18 22:42:24


好啊 谢谢了呵呵

javanetwork 发表于 2011-8-18 22:58:04

补码有一个比较容易理解的算法:

任意一个负数我们对其求反,即0变为1,1变为0
然后两个数相加肯定=11111111
1100+0011=1111   1011+0100=1111
而11111111再加1=00000000,最高位舍去变成0
所以得出一个结论:
负数+ 取反 +1=0


(1)将一个负数求其补码:
如-104,变成 -104+103+1=0
103的二进制用除2取余法为01100111
也就是说 -104的补码跟 01100111相反,所以-104=10011000
(2)已知补码形式,求其表示的值
同样的道理
10011000取反 01100111=103
所以 ?+103+1=0?=-104

мe.! 发表于 2011-8-18 23:43:09

;P         

jacalhu 发表于 2011-8-19 08:16:40

顺便学习下,谢了。。。

黑叶子 发表于 2011-8-19 11:34:12

其补码定义为-128

黑叶子 发表于 2011-8-19 11:42:21

[-128]补=2的八次方-128=128,也就是10000000B,这个数比较特殊

xznwood 发表于 2011-8-19 22:27:40

javanetwork 发表于 2011-8-18 22:58 static/image/common/back.gif
补码有一个比较容易理解的算法:

任意一个负数我们对其求反,即0变为1,1变为0


这位大侠你真是太牛了,这么好的方法我还从来没听过,我们老师怎么不教呢,哎!

还想问你下,你这种方法是另辟蹊径,请问能不能说说如果我就按照定义去求10000000的原码该怎么求?比如先减去1得11111111(最高位的1我当是符号位没有参加运算,没有动),再取反又得10000000,为什么又回来了啊,虽然2^7=128好像对了,但是符号位的1怎么又能参与运算呢,求教

xznwood 发表于 2011-8-19 22:30:48

已经一天没有坚持看汇编了,:Q,阿门!

javanetwork 发表于 2011-8-20 20:45:09

本帖最后由 javanetwork 于 2011-8-20 20:55 编辑

xznwood 发表于 2011-8-19 22:27 http://bbs.fishc.com/static/image/common/back.gif
这位大侠你真是太牛了,这么好的方法我还从来没听过,我们老师怎么不教呢,哎!

还想问你下,你这种方 ...
取反再加1,添个负号
其实跟我说的是同一个理,只不过比较容易接受
符号位当然也参与运算了,符不符号是我们说了算,
计算机就一SB,哪懂得正负
10000000 取反变成01111111
两者相加,=11111111=-1
所以10000000=-1-01111111=-1-127=-128


页: [1]
查看完整版本: 请教补码10000000的原码是多少啊,它表示多大呢?怎么算的