关于单片机汇编求补的疑问?

假设A中存有一个负数;因此求补码如下CPLA(按位取反)INCA(自加1)。按补码的定义;补码=反码+1按上述指令则补码=逐位取反+1可是“取反码"和“逐位取反”也不是一... 假设A中存有一个负数;
因此求补码如下 CPL A (按位取反)
INC A (自加1)。
按补码的定义;补码=反码+1
按上述指令 则 补码=逐位取反+1

可是 “取反码" 和 “逐位取反”也不是一回事啊(符号位变化) 请高手解释
展开
 我来答
tinghost
2010-11-18 · 超过27用户采纳过TA的回答
知道答主
回答量:67
采纳率:0%
帮助的人:23.3万
展开全部
首先要注意,只有负数需要计算补码,正数的原码反码补码都是一样的。
其次,这里你有个误解,负数的补码是其绝对值取反后,再将其最高位置1,然后加一即可。(注意,因为负数的绝对值的最高位肯定是0,取反后本来就是1,因此第二步最高位置1其实是不必要的,这里指出来,只是为了系统的说清楚补码的运算过程)
例如,-7的单字节补码计算为:
-7的二进制是10000111
7的二进制是00000111
按位取反:11111000
+1:11111001
这个就是-7的补码了。
也就是说,你这个程序前面还少了一部分,
即判断该数是否是负数,即最高位是否是1。
然后如果是负数,要首先将最高位置0
然后就可以用你这两句来计算了。
对了,补充一点,对于一定字节数的整数来说,其最大负数是没有原码和反码的,补码直接是最高位1,其他全0。
例如:对于单字节来说,-128的补码是10000000
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式