十六进制数怎样转换成带符号十进制数的问题

400H=010000000000B是无符号数1024D,400H变成十进制带符号数时,我理解为取反加1:110000000000就是-1024DB4H=10110100... 400H=0100 0000 0000 B 是无符号数1024D,400H变成十进制带符号数时,我理解为取反加1:1100 0000 0000 就是-1024DB4H=1011 0100 B 是无符号数180D,B4H变成十进制带符号数时,也理解为取反加1符号位不变:1100 1100 就是-76D11H=17D,11H=0001 0001 B,为什么变成十进制带符号数是-17D,过程为理解,请好心人帮助解答一下! 展开
 我来答
X_D钙
推荐于2018-06-16 · TA获得超过1766个赞
知道小有建树答主
回答量:380
采纳率:0%
帮助的人:85.5万
展开全部
88H
1.首先把88H转换成二进制,转换规则为十六进制的每一位转换成二进制的四位,比如十六进制的8转换成二进制的1000.这是因为2^4=16,因此十六进制的每一位对应二进制的四位.
88=>10001000
2.第二步,二进制的负数是以补码的形式储存在计算机里的.因为是有符号数,最高位为1,所以刚才转换的B=10001000是负数,并且是原数的补码,设原数为A,那么10001000就是A除符号位之后各位取反(反码)并加1的结果.从B出发求A,只需要将上述过程逆过来就行,即B减去1得出A的反码(10000111).除符号位后各位取反=>A=11111000
3.接下来的工作就是将A转换成十进制啦,(11111000)h=-(2^3+2^4+2^5+2^6)=(-120)d
匿名用户
2014-02-21
展开全部
你别都一律取反加1啊.首先,要说清楚待转换的数是多少有效位,然后看最高位是不是1,才决定是否需要取反加1就拿400H来说吧,如果是11位有效位,400H=100 0000 0000,那么才取反加1得出-1024D,假如规定是12位甚至更多的位,那么400H=0100 0000 0000,最高位是0,直接得出+1024D不信你用C语言试试,short data=0x400; printf("%d", data);看看是-1024还是+1024.你对数值编码理解太......
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-02-21
展开全部
判断符号位!貌似是按照1的个数的!我也忘得差不多 了!!额!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式