微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

知道数字是有符号还是无符号只是编译器的问题吗?

如何解决知道数字是有符号还是无符号只是编译器的问题吗?

我最近正在研究二进制补码以及我们如何使用相同硬件对两个数字进行加、减和乘,而不管它们是有符号还是无符号。 然后我想起在静态编译语言(例如C)中,我们需要明确告诉编译器已签名或未签名。

我明白虽然 cpu ALU(我认为)不需要(或不想)知道数字是有符号还是无符号,但是编译器需要!以便我们可以进行正确的计算、比较并更好地处理输入/输出

我的低级倾向问题是:

最低级别,计算机是否真的不需要知道数字是否有符号,这真的是只关心编译器吗?

在这里做了一些实验,得到了一些有趣的结果

(C Code) Changing if the b is signed or unsigned in code

Generated Assembly from the C code (comparison parts only)

汇编代码没有太大区别,但确实不同,我觉得这很有趣。 所以看起来有符号或无符号只是编译器和程序员的问题,所以我们可以生成正确的代码,我遗漏了什么?,一些低级细节?,如果号码是否签名?

cpu 完全忽略数字是有符号还是无符号?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。