[英]Is 2s complement a way to store negative number?
我已经阅读了许多文章和SO答案,以了解2s complement
。 他们对我有很大帮助。 但是,我对2s complement
几乎没有疑问。
1) 2s complement
是否2s complement
一种存储负数的方式以使操作变得容易或也有其他应用程序?
2)当计算机看到负数时自动取2s complement
码?
3)采用2s complement
是-编译器的工作或由处理器完成还是什么?
4)在编译时,运行时或将值辅助变量时采用2s complement
?
我读过的文章是 (建议您更好地理解2s complement
):
1)是的。
2)计算机无法“看到”负数。 它可以看到大量的二进制数据。 您的应用程序具有智能地说“此二进制数据块是存储在2的compl中的整数”。 但是,世界上几乎每个CPU都支持2的补码算法。
3)编译器看到源代码,例如int32_t x = 0;
然后意识到该变量以二进制补码格式存储。 如果随后添加x = x - 1
之类的代码,则编译器在生成程序时会选择使用支持2的补码的处理器指令。 处理器仅执行程序指示的操作。 它没有情报。
4)如上所述,这是一个编译时决策。 (不太确定“补码”是什么意思...)
2s是否补充一种存储负数的方式以便于操作?
是的,它是存储带符号数字(负数和正数,而不仅仅是负数)的一种方式
电脑看到负数时会自动补2s吗?
再次为负->签名。 取决于架构。 可以选择1、2或其他某种表示形式。
采用2s补码是-编译器的工作或由处理器完成还是什么?
编译器必须了解系统,处理器可能会也可能不会了解2s补码系统。
在编译时,运行时或将值辅助变量时采用2s补码?
可以在所有阶段(编译,运行)计算2s补码
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.