Int32
和UInt32
有什么区别?
如果它们的容量范围能力相同,那么问题就是为什么要创建UInt32
?什么时候应该使用UInt32
而不是Int32
?
Int32
和UInt32
有什么区别?
如果它们的容量范围能力相同,那么问题就是为什么要创建UInt32
?什么时候应该使用UInt32
而不是Int32
?
UInt32无法表示负数。来自MSDN:
UInt32值类型表示无符号整数,其值范围从0到2的32次幂或2 ** 32(相当于4,294,967,295)。
uint32
是一个32位无符号整数,这意味着您可以表示2^32个数字(0-4294967295)。
然而,为了表示负数,32位中的一位被保留用于表示正数或负数。这使您在负数和正数中各有2^31个可能的数字。结果范围是-2147483648到2147483647(正数范围包括值0,因此仅有2147483647)。这种表示称为int32
。
对于那些根据定义不能为负数的数字,应该选择无符号的类型,因为它提供了更广泛的范围,但需要记住的是,从int32
转换到uint32
或者反过来是不可能的,因为int32
不能容纳uint32
的范围,反之亦然。
uint32
是无符号32位整数。它不能用于表示负数,但可以容纳更大的正数。
它们之间没有区别。
区别在于它们的表示方式,例如通过打印到终端。
例如,为了简单起见,我们仍然使用8位值:
0xff
,-1也是0xff
。0xfe
。好吧,如果我们将其转换为无符号数学,则变为0xff + 0xff = 0xfe。因此,你看,有符号和无符号之间没有区别,只有最终表示它们的方式不同,在这种情况下,类型指示了它的表示方式。
当编译器必须通过符号扩展从较小的大小转换为较大的大小时,有符号性变得重要。因此,在这种情况下,指定类型很重要,以便编译器可以做正确的事情。