汇编中有符号数加减计算的补码解释

博客介绍了机器码形式的数据,以十六进制数0ECH和02H为例,说明其可能是无符号数或有符号数的补码形式,无法直接看出真值。还展示了加法和减法运算结果,并以计算器计算127 - 1为例,阐述十进制转二进制、补码计算及二进制转十进制的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DB 0ECH

DB 02H

以上定义的两个数据都是机器码形式(二进制/十六进制),它们可能是无符号数(的补码形式)236和2,也可能是有符号数的补码形式-20和20,(机器内部的计算都是以补码形式进行),所以无法直接看出它们的真值(十进制+正负)。

 

ADD 0ECH,02H

得到的结果是0EEH,是机器码形式,它可能是无符号数结果(的补码形式)238,也可能是有符号数结果的补码形式,求补后为-18。

 

同理

SUB 0ECH,02H

得到的结果是0EAH,是机器码形式,它可能是无符号数结果(的补码形式)234,也可能是有符号数结果的补码形式,求补后为22。

 

例:计算器如何计算127-1=126(十进制)

  1. (127)d+(-1)d
  2. 十进制转二进制,并且转化为补码(不管有符号数还是无符号数都转化为补码,因为无符号数的补码与原码相同,机器内部的计算都是以补码形式进行)
  3. 01111111+11111111
  4. 得到01111110
  5. 求补码。因为上一步计算结果的符号位为0,此处求得的补码与原码相同,若符号位为1,则结果不同。
  6. 二进制转十进制。01111110=126
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值