当我们还是孩子的时候,我们就用数字来表示数量。这对我们来说似乎是天经地义的, 但是对一个古罗马人来说却未必如此。对他们来说,每个用来表示数字的符号总是代表相同的值:
I 1 II 2 III 3 IV 4 V 5 |
所有的I符号无论在哪里都表示值1(1),而V符号总是表示值5(5)。 然而,这在我们的十进制系统中是不存在的。当我们写数字1时,我们并不总是表示1的值(罗马数字中的I)。 例如:
1 I 10 X 100 C |
所以,符号1并不总是值为1(或罗马数字中的I)。例如,在第二种情况中, 符号1表示10的值(罗马语为X),在第三种情况中,1表示100的值(罗马语为C)。
例如: 200 + 70 5 --- 275 |
因此,第一个“2”相当于200 (2 x 100),第二个“7”相当于70 (7 x 10), 而最后一个"5"对应的值是5 (5 x 1)。
这是因为我们的系统是一个位置数字系统。因此,给定数字的值取决于它在所表示的整个数字中的位置。 所有这些都可以用一种非常简单的方法在数学上表示出来。 例如,为了表示值182736,我们可以假设每一位数字都是自身乘以10的指数位, 从右边开始是100,接着是101、102,以此类推:
八进制 十进制 ----- ------- 0 0 01 1 02 2 03 3 04 4 05 5 06 6 07 7 010 8 011 9 012 10 013 11 014 12 015 13 016 14 017 15 020 16 021 17 |
像十进制数有10个不同的数字代表(0123456789)和八进制数字8(01234567), 十六进制数字有16个不同的数字,所代表的数字从0到9,以及字母A, B, C, D, E和F 16个不同的符号,表达我们需要的基本16个数字:
十六进制 十进制 ----- ------- 0 0 0x1 1 0x2 2 0x3 3 0x4 4 0x5 5 0x6 6 0x7 7 0x8 8 0x9 9 0xA 10 0xB 11 0xC 12 0xD 13 0xE 14 0xF 15 0x10 16 0x11 17 |
八进制数和十六进制数在比特世界中比十进制数有很大的优势, 它们的基数(8和16)是2的完美倍数(分别为23和24), 这使得我们可以更容易地从这些基数转换为二进制数, 而不是从十进制数(基数为2x5)转换为二进制数。例如, 假设我们要将以下二进制序列转换为其他基数的数字:
110011111010010100 110 011 111 010 010 100 6 3 7 2 2 4 |
11 0011 1110 1001 0100 3 3 E 9 4 |