一、进制
在日常生活中,人们最习惯用十进制,逢 10 进 1 。游戏中屏幕上见到的都是十进制的数,如生命值 500 ,等等;此外,还有 60 进制,如 60 秒为 1 分钟,逢 60 进 1 ;十六进制,如过去的重量单位, 16 老两为 1 斤,逢 16 进 1 ;十二进制,如 12 个月为 1 年,12 个为 1 打,逢 12 进 1 ;二进制,如两个为一双,逢 2 进 1 。
游戏修改没有这么复杂,大部分使用的都是十六进制与二进制,所以我们只是掌握其中十六进制、二进制与十进制的互相转换就可以了。
二、十进制转换为十六进制
在计算机上,十进制数用 d 后缀表示,如 10d ;十六进制数用 H 后缀表示,如 7H 。
十六进制由 0、1、2、3、4、5、6、7、8、9、10、11、12、13、14、15共 16 个数字组成,其中10、11、12、13、14、15分别用“A”“B”“C”“D”“E”“F”代表,逢 16 进 1 。
要将十进制转换为十六进制,只需用十进制的数除以 16 ,然后将余数拼接起来就行了。
如我们将十进制的 500 转换为十六进制:
500 除以 16 等于 31 余 4 ,记下这个 4 ;31 除以 16 等于 1 余 15(十六进制用 F 表示),1 由于跟 16 相除已经除不尽了,所以最后将它们拼接起来,十进制的 500 转换为十六进制后是:1F4 。由于游戏中常常用两个字节表示一位,所以象 1F4 这样的奇数位数字前面加 0 进行表示,即 01F4 。
那么不满 16 的十进制数如何表示呢?很简单,直接用它表示就行了,如十进制的 7 在十六进制中还是用 7 表示,十进制中的 10 还是用十六进制中的 A(10)表示。
练习:
1、1000d = ()H ?
2、678d = ()H ?
答案:1:3E8 2:2A6
三、十进制转换为二进制
二进制数字用后缀 “b” 表示。
方法与十进制转换为十六进制一样,只不过是用十进制的数字除以 2 ,最后将余数拼凑起来就行了。
如十进制的 500 转换为二进制:
500 除以 2 等于 250 余 0 ,记下这个 0 ;250 除以 2 等于 125 余 0 ;125 除以 2 等于 62 余 1 ;62 除以 2 等于 31 余 0 ;31 除以 2 等于 15 余 1 ;15 除以 2 等于 7 余 1 ;7 除以 2 等于 3 余 1 ;3 除以 2 等于 1 余 1 ;1 由于除以 2 除不尽,所以最后拼接起来,就是 111110100b 。
练习:
1、7d = ()b?
2、15d = ()b?
答案:1:111 2:1111
四、十六进制或二进制向十进制的转换
方法很简单,只需用每位上的数字跟 16 (十六进制)或 2 (二进制)的 N 次方相乘,最后将所有数字相加就行了。这里的 N 次方用“位数-1”来表示,如十位的 N 是 1 (2-1),百位的 N 是 2 (3-1)
例如:
将十六进制的 1F4H 转换为十进制:
1F4H 等于:4 与 16 的 0 次方相乘,得 4 ;F 与 16 的 1 次方相乘,得 240 ;1 与 16 的 2 次方相乘,得 256 ,最后 4+240+256=500 ,而这个 500 正好是 1F4H 相对应的十进制数。
将二进制的 101101b 转换为十进制:
101101b 等于:1 与 2 的 0 次方相乘,得 1 ;0 与 2 的 1 次方相乘,得 0 ;1 与 2 的 2 次方相乘,得 4 ;1 与 2 的 3 次方相乘,得 8 ;0 与 2 的 4 次方相乘,得 0 ;1 与 2 的 5 次方相乘,得 32 ,最后相加:1+0+4+8+0+32=45,而这个 45 正好是 101101b