gpt4 book ai didi

c++ - 为什么 "-1"在signed int 中是 11111111 而不是 10000001

转载 作者:行者123 更新时间:2023-11-30 21:25:15 25 4
gpt4 key购买 nike

我怀疑为什么我们在 signed int 中使用 -1 作为 11111111 ,而不是 10000001。因为我们了解到第一位用于指定符号,其余七位用于指定值。那么设计者出于什么原因决定使用-1作为

[first bit = 1 , Value by seven bits =127]但不是[first bit = 1 , Value by seven bits =1]

最佳答案

C 和 C++ 允许符号和数值(使用 -1,如 10000001)和二进制补码形式(使用 -1,如 11111111)。

此外,两种语言都允许补码形式(带有 -1,如 11111110)。

但是,在大多数现有平台上都使用二进制补码形式。一个主要优点(您问的“为什么”)是,这些值与您通过无符号算术环绕得到的值相同,这就是您在 C 和 C++ 中使用 unsigned 得到的值。换句话说,如果将相同的位解释为无符号值,那么它与负值正好相差 2n,其中 n是值表示位数。

关于c++ - 为什么 "-1"在signed int 中是 11111111 而不是 10000001,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31488091/

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