我是在C#
的上下文中询问的。为什么Int64
和UInt64
都是一样大小的,即64-bits
。其他Int变量也是如此。
我原以为UInt
的大小要小一点,因为它不需要表示-
符号,我在这里期待的是一些不合逻辑的东西吗?
发布于 2015-03-03 10:45:01
其根本原因是现代CPU是64-bit
CPU。所以实现起来要容易得多
64-bit integer - one CPU register (say RAX)
32-bit integer - half CPU register (EAX)
16-bit integer - 1/4 (AX)
8-bit integer - 1/8 (AH)
否则(例如96-bit
),您必须设计自己的支持,例如,整数溢出检测等,这将是缓慢的。
发布于 2015-03-03 10:38:20
64
在Int64
和UInt64
中意味着整数的大小是64位。这就是它们大小相同的原因。
大小相同,但范围不同(也是由于重要的位数):
发布于 2015-03-03 10:39:54
这一切都归结为最重要的比特是什么用途。在有符号的数据中,它表示符号;在无符号数据中,它只是另一个数字。这意味着,无符号数据可以表示数值的两倍大,但仅代表正值(和零)--例如,在64位数据中,无符号值为0到18,446,744,073,709,551,615 -其中-签名值为-9,223,372,032,875,808到9,223,372,034,775,807至9,223,372,054,775,807。
对于8位比较容易看到:-128到127,而0到255.可能值的数目是相同的。
https://stackoverflow.com/questions/28829514
复制相似问题