问题描述
我最近正在研究二进制补码以及我们如何使用相同硬件对两个数字进行加、减和乘,而不管它们是有符号还是无符号。 然后我想起在静态编译语言(例如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 (将#修改为@)