【Java Saves!】Session 6:十六指星人

时间:2023-03-09 04:58:53
【Java Saves!】Session 6:十六指星人

前面说,计算机用2个手指头数数,它内部的数是二进制,有0和1两个数字。也看到,对于人来说,二进制数too long, too inconvenient, sometimes troublesome。程序员也是人。程序员是十六指星人。十六指星人数数用十六进制。

十六进制共有16个数字,除了0~9,还用A~F 这6个字母分别代表10~15。多位数满16进1。以一例说明十六进制数转换为十进制数的方法:

1E240十六进制

= 1 × 164 + × 163 + 2 × 162 + 4 × 161 + 0 × 160

= 1 × 65536 + 14 × 4096 + 2 × 256 + 4 × 16

= 123456

没错,这就是前面那篇随笔中所例举过的数,其二进制表示为 11110001001000000。为方便看官,我把图在这里再贴一次。注意上面算式中蓝色的十六进制数字E转换为十进制数是14。

【Java Saves!】Session 6:十六指星人

相比于二进制,十六进制数书写简洁,且与二进制数之间转换方便:十六进制数的每位数字对应二进制数的4位数字。我们将上例这个数的二进制形式按每4位用空格分隔,就能很清楚地看到这个对应关系了:

123456十进制

= 1E240十六进制

= 1 1110 0010 0100 0000二进制

注意,其中二进制数的最高位补了3个0(蓝色部分),凑齐了4位。

小结一下:(1)在计算机内部,数是二进制;(2)同一个数,可以用二进制、十六进制、十进制等不同的 表示形式 ;(3)十六进制因其简洁而又易于与二进制数之间互相转换,被程序员普遍使用

二进制的英文是binary,十六进制是hexadecimal,十进制是decimal。所以,上面Windows计算器截图上可以看到,二进制数前写着BIN,十六进制数前写着HEX,十进制数前写着 DEC。

Java 源代码中十六进制数前面要加0x,用以与十进制数区分,例如:123456写成0x1E240。