| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 949 人关注过本帖
标题:基础问题,各位大侠指教一下。
只看楼主 加入收藏
ymxu
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-6-19
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:12 
基础问题,各位大侠指教一下。
本人刚学汇编,书上说 -127 的十进制,转为16进制为 81,127 十进制转为16时制为 7F,那么7×16+15=127没错,那么8×16+1=128,怎么不是等于 -127 呢?

还有一个是:设
X=-25=-19H=-0011001B
则x的8位补码表示为:[x]补=11100111B=E7H
则x的16位补码表示为:[x]补=1111111111100111B=FFF7H
上面的这两行中 E7H=14×16+7=231 怎么是等于-25呢?
FFF7H=15×16×16×16+15×16×16+15×16+7=61440+3840+240+7=65527 更不是等于-25了?

搜索更多相关主题的帖子: 十进制 
2011-10-28 18:17
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:20 
第一个等不等于可以用windows带的计算器算 书上说的是对的

下一个 一个数用字节和字来存储 补码不同也正常罢 至于相等不相等呢 如果是汇编 这两个没法比 如果是C等高级语言呢 比较的时候会自动转换 所以在电脑里不会有这样的问题 只有你拿笔算的时候会不相等 确实不相等 因为没有这么比的。。

第一个肯定你要说 哎呀 我算的和书上不一样诶 我看出来了 你很认真 表现在用十进制把计算过程写出来了 可是诶 计算机里没有十进制 十进制只不过是帮助理解转换的 你既然怀疑算法我们来算一下

转补码 是取反 加一 但在补码里 最高位是符号位 所以其实你是把数转换为7位二进制(对于字节来说的) -127 127转2进制 0111 1111B 我补的那个0正好是最高位 取反 是什么 1000 0000B 然后 加1 1000 0001B 用16进制表示是81H 信服罢 然后是81H 取反加1 是取反的7位哦 0111 1111B 是127 符号位1 是负数 -127 转换来转换去都没错啊

要学会用二进制来思考问题 电脑里只有二进制 让你学汇编 你真正能用汇编写多少程序呢 其实还是学的二进制的思维 学的是计算机的工作方式 有个意识而已罢

祝学习顺利 有问题欢迎来讨论 唉 很多人来一次就走了 没意思。。
2011-10-28 22:33
insok
Rank: 2
来 自:江苏常州
等 级:论坛游民
帖 子:32
专家分:63
注 册:2011-10-29
收藏
得分:0 
额,突然觉得版主是寂寞无奈的。。。虽然这个和汇编没什么关系。81写成二进制是1000 0001,这个应该是补码吧。(说实话,我也是新学,不很懂,所以。。。见谅啊)
那么反码应该是1000 0000,原码就是1111 1111,1+2+4+8+16+32+64=127,第一位符号位为1,所以是负。。。连起来大概就是 -127 了。
                                         (从2的零次方加到2的七次方)

我什么都不懂……额。丢人啊。
2011-10-29 11:59
ymxu
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-6-19
收藏
得分:0 
那-128的补码是怎么算的?

128=64*2....0
64=32*2......0
32=16*2......0
16=8*2.......0
8=4*2........0
4=2*2........0
2=1*2........0
1..........1

上面是128的正值为10000000,那么取补码为:01111111+1=01111110
可书上是10000000?
2011-10-30 07:57
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用ymxu在2011-10-30 07:57:29的发言:

那-128的补码是怎么算的?

128=64*2....0
64=32*2......0
32=16*2......0
16=8*2.......0
8=4*2........0
4=2*2........0
2=1*2........0
1..........1

上面是128的正值为10000000,那么取补码为:01111111+1=01111110
可书上是10000000?

你用计算器算算是么。。
2011-10-30 09:27
ymxu
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-6-19
收藏
得分:0 
我先没用计算器算,因为看书上说:一上负数的补吗是:符号位不变,其它各位相反,最低位加1,所以就算了一下,就是这种结果了。而且用计算器算10000000的十进制也是128,而不是-128.
2011-10-30 09:41
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
最低位加1 有进位

如果真像你说的那样 还得专门搞一种不进位的加法出来。。。
2011-10-30 09:51
ymxu
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-6-19
收藏
得分:0 
zklbp大哥,你能说说 -128 变补码的详细步骤吗?我从事的工作与电脑不相干,对于电脑底层的东西根本不懂,完全就是看书本,书上说的有时理解不了,有时说得太笼统,你跟我一步步的说一下,我就能举一反三了,谢谢。
2011-10-30 12:18
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
我从事的工作与电脑不相干,对于电脑底层的东西根本不懂

其实我是搞医药工作的 你信么、、、、、
2011-10-30 17:38
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
哦 顺便 windows自带的计数器是个好工具 功能强大哦。。
2011-10-30 17:39
快速回复:基础问题,各位大侠指教一下。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.065794 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved