我读过很多文章和答案来理解2s complement
。他们给了我很多帮助。然而,我心中却没有多少疑问2s complement
.
1) Is 2s complement
一种存储负数以便于操作的方法或者还有其他一些应用程序?
2) 2s complement
当计算机看到负数时自动取值?
3) 服用2s complement
是编译器的工作还是由处理器完成还是什么?
4) When 2s complement
是在编译时、运行时还是为变量赋值时获取的?
我读过的文章有(应该建议理解2s complement
更好的):
什么是“2的补码”? https://stackoverflow.com/questions/1049722/what-is-2s-complement
为什么用补码来表示负数? https://stackoverflow.com/questions/1125304/why-is-twos-complement-used-to-represent-negative-numbers/1125317#comment44829269_1125317
http://www.cs.cornell.edu/~tomf/notes/cps104/twoscomp.html http://www.cs.cornell.edu/~tomf/notes/cps104/twoscomp.html
1) Yes.
2)计算机无法“看到”负数。它可以看到一大块二进制数据。您的应用程序具有智能,可以说“这块二进制数据是存储在 2 的 compl 中的整数”。然而,世界上几乎每个 CPU 都支持 2 的补码运算。
3)编译器看到源代码如int32_t x = 0;
然后意识到这个变量是以二进制补码格式存储的。如果您然后添加类似的代码x = x - 1
编译器在生成程序时选择使用支持 2 补码的处理器指令。处理器只执行程序告诉它执行的操作。它没有智力。
4) 如上所述,这是一个编译时决定。 (不太确定“补充”是什么意思......)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)