按位容量和位容量之间的关系是什么?

时间:2013-07-03 05:04:06

标签: c#

C#5.0 in a Nutshell 中的C#主题转化(第2章)中,作者说:

  

...转化可以是隐式显式:隐式转化会自动发生,显式转化需要强制转换。在下面的示例中,我们隐式地 int 转换为 long 类型(其具有两倍于 int )...

这是一个例子:

int x = 12345;      // int is a 32-bit integer
long y = x;         // Implicit conversion to 64-bit integer
short z = (short)x; // Explicit conversion to 16-bit integer

按位容量和位容量之间是否存在关系?或者,作者对按位容量的看法是什么?

3 个答案:

答案 0 :(得分:2)

我认为,他希望区分“按位容量”和“数字容量”。

在该示例中,数据类型按位容量不同:int具有32,长64和短16.在这种情况下,对具有较高容量的数据类型的转换是隐式的,对具有较低按位容量的数据类型的转换是显式的。

另一方面,有类似“数字容量”的东西,其中int和uint共享相同的位数(它们具有相同的“按位容量”),但仍然不能完全兼容你可以存储的值(uint不支持负值)。

答案 1 :(得分:1)

这是一回事。它只是意味着您有两倍的位来表示您的值,这意味着您可以存储更大的数字。因此,数字容量与按位容量相关联,因为数字容量越大,位数越多。

使用64位数据类型,您可以使用64位二进制数表示您的值

答案 2 :(得分:1)

我认为它们的意思是“容量,就位而言”。如果他们省略了“按位”部分,那么它很容易被解释为“这种类型保存的值是另一种类型的两倍”,这是错误的:它保存的值远远超过值的两倍。它保持两倍的位数,这会以指数方式增加值的数量。