Int32
和UInt32
之间的区别是什么?
如果它们与容量范围功能相同,那么问题是UInt32
创建的原因是什么?我应该何时使用UInt32
代替Int32
?
答案 0 :(得分:39)
UInt32不允许使用负数。来自MSDN:
UInt32值类型表示无符号整数,其值范围为0到4,294,967,295。
答案 1 :(得分:10)
整数是-2147483648到2147483647,无符号整数是0到4294967295。
本文可能会对您有所帮助:
http://www.csharp-station.com/Tutorials/Lesson02.aspx
答案 2 :(得分:5)
uint32是一个32位的无符号整数,这意味着您可以表示2 ^ 32个数字(0-4294967295)。
然而,为了表示负数,保留32位中的一位以指示正数或负数。这样你就可以得到2 ^ 31个可能的数字,也可以是正数。结果范围是-2147483648到2147483647(正范围包括值0,因此只有2147483647)。这种表示形式称为int32。
你应该选择无符号的数字,这些数字不能定义为负数,因为它为你提供了更宽的范围,但是你应该记住,从和转换到int32是不可能的,因为int32不能保持uint32的范围反之亦然。
答案 3 :(得分:1)
UInt32未签名。它不能用于表示负数,但可以保留更大的正数。
答案 4 :(得分:-4)
它们之间没有区别。
区别在于它的表示方式,例如通过打印到终端。
例如,为了简单起见,坚持使用8位值:
0xff
,-1也是0xff
。0xfe
。好吧,如果我们将其转换为无符号数学,则它将变为0xff + 0xff = 0xfe。因此,您看到,有符号和无符号之间没有区别,只有最终我们如何表示它们才有区别,在这种情况下,类型指示了它的表示方式。
当编译器必须通过符号扩展将较小的大小转换为较大的大小时,签名变得很重要。因此,在这种情况下,指示类型很重要,以便编译器可以执行正确的操作。