首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >十六进制U2相减

十六进制U2相减
EN

Stack Overflow用户
提问于 2013-12-17 21:24:06
回答 1查看 775关注 0票数 0

我想减92H-64H在两个的互补和状态是带标志位C和溢出标志位V是1还是0。到目前为止,转换和签入十进制没有问题,因为它是146-100=46=2EH,但是我在执行逐个检查位的减法操作中迷路了。我可以想象它是用二进制语言完成的,但是怎么做到的呢?感谢你的帮助!!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-26 00:58:11

你必须用二进制操作。十六进制只不过是一种简单的(=较少的数字)方式,可以在内部显示二进制数字。

也就是说,你的两个数字:

92h - 64h。我猜你的工作是8位。将它们转换为二进制:1001 0010 - 0110 0100

若要使用c2进行减除,请使用第二个数字0110 0100

反转其位:1001 1011

添加一个:1001 1011 + 1 = 1001 1100

将此新数字添加到前一个第一个数字:

代码语言:javascript
复制
 1001 0010
 1001 1100
 ---------
10010 1110

进位是这个加法的第9位.在这种情况下,溢出位的计算方式如下:取加法中每个数的第8位:它们是1、1和0。这些是每个数字的符号位。

如果操作数1和2的两个符号是相同的,则存在溢出,位结果的符号是不同的。在任何其他情况下,都不会有溢出。

在这个加法中,两个操作数的符号是相同的(1),但是结果的符号不是(它是0),所以这里有溢出。

顺便说一句,这个加法的结果(取其较低的8位,丢弃进位)是原始减法的结果。

加成的结果是0010 1110,也就是十六进制中的2E

所以92h - 64h = 2Eh,进位是1,溢出是1

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20644980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档