无符号数和有符号数在汇编程序里如何区分?

 我来答
太平洋科技
优质机构答主

2023-01-06 · 百度认证:广东太平洋互联网信息服务有限公司官方账号,优质数码...
太平洋科技
太平洋电脑网通过分析、评测生活及工作中各类消费品,让消费者客观了解产品性能及安全状况,帮助用户做出理性购买选择。同时科普各领域产品知识,解答用户选购及使用中所遇问题。
向TA提问
展开全部

在汇编程序里是没有无符号数和有符号数区分的。

加减运算指令是不区分有符号和无符号的,在计算机对有符号整数的表示只采取一种编码方式,不存在正数用原码,负数用补码的问题。

在汇编语言里声明变量的时候,没有signed和unsignde之分,汇编器全部将输入的整数字面量当作有符号数处理成补码存入到计算机中,只有这一个标准,并且全部汇编成补码。也就是说,db-20汇编后为:EC,而db236汇编后也为EC。

db是分配一个字节,一个字节能表示的有符号整数范围是:-128~+127,那么db236超过了这一范围,+236的补码的确超出了一个字节的表示范围,那么拿两个字节是可以装下的,应为:00EC,也就是说+236的补码应该是00EC,一个字节装不下。00EC是两个字节,被截断成EC,当把236当作无符号数时,它汇编后的结果正好也是EC。

扩展资料

无符号数和有符号数的使用

#include<stdio.h>

#include<string.h>

intmain()

{

intx=2;

char*str="abcd";

inty=(x-strlen(str))/2;

printf("%d\n",y);

}

参考资料来源:百度百科—有符号数处理

参考资料来源:百度百科—无符号数

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式