gpt4 book ai didi

c - 简单 : What is the "+" operator doing (C bits)?

转载 作者:行者123 更新时间:2023-12-02 07:05:24 24 4
gpt4 key购买 nike

我环顾四周,似乎找不到这个看似简单的问题的答案:C(位)中的“+”或“-”究竟是什么?

比如11111111 11111111 11111111 11111111加1表示什么?

我问这个是因为我正在阅读一些代码,但我不知道是什么

 ~0 + 1

正在做。我的意思是,我们不能将 1 加到 4294967295 上吗?

谢谢!

最佳答案

答案将取决于您的计算机对有符号数字使用的表示形式。

  • 在“补码”格式中,~0 == -1,所以 ~0 + 1 == 0

  • 在“一补”格式中,~0 == -0,所以 ~0 + 1 == 1

    <
  • 在“符号幅度”格式中,~0 == INT_MIN,所以 ~0 + 1 == INT_MIN + 1

保证在所有系统上定义结果。

另一方面,如果您使用无符号数,您将始终得到相同的结果。

  • ~n 被定义为 n 类型的最大值减去 n。所以 ~0uUINT_MAX

  • x + y 保证环绕,因此标准保证 UINT_MAX + 1 == 0 在所有系统上。

    <
  • 因此,~0u + 1 == 0u 在所有系统上,保证。

如您所见,这与二进制补码的行为相同,这就解释了二进制补码的流行。不使用二进制补码的系统现在很少见,不包括 bigint 库。

关于c - 简单 : What is the "+" operator doing (C bits)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12869900/

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