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

 我来答
求真实验室
2022-12-13 · 探索生活中的科学奥秘
求真实验室
太平洋电脑网是专业IT门户网站,为用户和经销商提供IT资讯和行情报价,涉及电脑,手机,数码产品,软件等。
向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

提交
取消

辅 助

模 式