gpt4 book ai didi

c - C 中 int 和 unsigned int 值表示(以位为单位)有什么区别

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

我通过实验注意到unsigned int数字的值以 32 位表示,即使该数字占用 1 位空间,其余位也会采用 0 作为值。在int时,该值被放入所需的位中,只需为符号添加 1 位。有人可以向我解释一下那是什么吗?

最佳答案

i noticed by experiment that in unsigned int the value of a number is represented in 32 bit even if the number is taking 1-bit space, the rest of the bits would take 0 as a value. while in int, the value is being put in the bits needed with just 1 more bit added for the sign. can someone please explain to me what's that?

当然。你错了。

C 标准指定,作为相应的无符号和有符号整数类型,unsigned int 和(有符号)int 需要相同的存储量 (C2011 6.2.5/6)。该标准没有指定这些类型的确切大小,但 32 位是常见的选择。如果 unsigned int 的表示在给定的 C 实现中需要 32 位,那么该实现的 int 的表示也是如此。

此外,尽管 C 允许从 3 种负值表示形式中进行选择,但有符号和无符号整数表示之间的对应关系已定义,以便 int 表示中的值位 - - 既不是填充位也不是一个符号位 - 表示与相应无符号整数类型相同位置的位相同的位值(C2011,6.2) .6.2/2)。因此,具有非负值的有符号整数的表示可以被重新解释为相应的无符号整数类型,而不改变其数值。

关于c - C 中 int 和 unsigned int 值表示(以位为单位)有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41047031/

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