序
不久前看到一代码片段,如下:
int wordlength(void) {
int i = 1;
unsigned j = (unsigned)~0;
for(; (j = j >> 1) > 0; i++)
;
return i;
}
上述代码片段用于计算计算机的字长(计算机一次性可操作的字节数),例如 32位操作系统可以一次性读取4个字节,64位操作系统可以一次性读取8个字节。
当然,这段代码经过验证并不能得到正确的结果,因为这个算法是求C中int类型的字节数大小。
那么回到Java语言中,我们都知道Java的八大基本类型内存大小如下:
类型 | 字节大小 | 位数 |
---|---|---|
byte | 1 | 8 |
short | 2 | 16 |
int | 4 | 32 |
long | 8 | 64 |
float | 4 | 32 |
double | 8 | 64 |
char | 2 | 16 |
boolean | 1 | 8 |
那么如何证明表格中整数类型的大小是正确的呢?
也许你在想可以将上述代码片段转换为Java代码片段进行验证,但是很遗憾,Java中整数是有符号的,上述代码片段