gpt4 book ai didi

c++ - 2s补码是一种存储负数的方法吗?

转载 作者:搜寻专家 更新时间:2023-10-31 00:33:35 25 4
gpt4 key购买 nike

我阅读了很多文章和 SO 答案来理解 2s complement。他们帮了我很多。但是,我对 2s complement 几乎没有疑问。

1) 2s complement 是一种存储负数的方法,以便于操作或者还有一些其他应用吗?

2) 2s complement 当计算机看到一个负数时自动取?

3) 2s complement 是——编译器的工作还是由处理器完成还是什么?

4) 2s complement 是在 -- 编译时、运行时还是在为变量赋值时?

我阅读的文章是(应该推荐以更好地理解2s complement):

What is “2's Complement”?

Why is two's complement used to represent negative numbers?

http://www.cs.cornell.edu/~tomf/notes/cps104/twoscomp.html

最佳答案

1) 是的。

2) 计算机无法“看到”负数。它可以看到一大块二进制数据。您的应用程序拥有说“这 block 二进制数据是存储在 2 的 compl 中的整数”的智能。然而,世界上几乎所有的 CPU 都支持 2 的补码运算。

3) 编译器看到int32_t x = 0;这样的源代码,然后意识到这个变量是以二进制补码格式存储的。如果您随后添加类似 x = x - 1 的代码,编译器会在生成您的程序时选择使用支持 2 的补码的处理器指令。处理器只做程序告诉它做的事情。它没有智慧。

4) 如上所述,这是一个编译时决定。 (不太确定你所说的“补充”是什么意思……)

关于c++ - 2s补码是一种存储负数的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28233888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com