第一节:进制
这一讲的内容比较枯燥,但他却是最基础的一部分,新手必须从这里开始,而老鸟可以先去文库瞧瞧,或是可指正本讲不足之处,好了,不多说废话了,下面开讲。
话说现在的Win95/98都自带计算器,进制的转换可以不用手算,但后面的原理篇会涉及这方面的内容,不了解的话会举步维艰的,所以还是要学一学。
所谓进制,其实大家平时时常都会遇到,如吃了9个苹果,再吃一个就是10个了,60分钟就是一小时。以上所举的两个例子就是十进制,六十进制的具体表现,他们都是逢十进一或逢六十进一的。其他进制还有二进制,三进制,四进制...n进制,只要数的出来都可以。但在现实中不会用那么多进制,一般有二,八,十,十六,六十进制等,而在游戏修改中用的最多的只有二,十,十六进制了。本讲也只以这三种进制的转换为主。
--------------------------------------------------------------------------------
第二节:十进制与其他进制的转换
先来了解几个概念:基数,权值.
逢n进一的n就是基数,基数为几就有几个数字,如二进制基数为二,则有0,1两个;八进制基数为八有0,1,2,3,4,5,6,7八个。总之从0开始,最后一位位n-1.而十六进制由于超过十,所以从十开始为A(10),B,C,D,E,F(15).
所谓的权可以这样理解,一个数的每位都有一个权值m,并且权值为位数减一,如个位上的数的权值为0(位数1-1=0),十位为1(2-1=1).
现在应该谈谈他们之见的转化问题了.十进制转换为其他进制,一句话可以完全概括了,‘除基取余’。如十进制的10/16=0余10,但十六进制是用A来表示的,又如33/16=2余1(33-2x16=1),第二次用商2/16=0余2,这个数就是21,(有后往前取)其他类推。十进制转化为二进制也是如此,如10/2=5余0,5/2=2余1,2/2=1余0,1/2=0余1,也就是1010了。
那么其他进制转化为十进制也可一句话概括,‘按权展开’.知道了权值m,就可以转化了。 首先,每一位的位数乘以基数n的m次方,如八进制个位3,3x8^0=3(8^0等于8的0次方),百位5,5x8^2=320.最后加总.
********
下面来练习一下:(一般默认十进制以d结尾,八进制为o,二进制为b,十六进制为h,如十进制100为100d,二进制1001为1001b)
1.100d=( )h
2.100h=( )d
3.100b=( )d
4.100d=( )b
答案:1.64 2.256 3.4 4 1100100
--------------------------------------------------------------------------------
第三节.二,十六进制的转换
对于游戏修改部分的有关进制方面的内容在上一节应都学完了,因为二到十六进制的转换可通过将二进制转换为十进制,再转换为十六进制完成。不过学完这一节后,你在进制转换方面将更有效率。
二进制到十六进制的转换。我们可以将二进制数由右至左分为几部分,每一部分有四位(因为2的4次方为16),不足四位的补0,如10011b,可分为0001和0011两部分,第一个补了3个0。然后将两部分分别化为十六进制,第一个是1,第二个是3。最后合起来,为13h。
十六进制到二进制的转换。同理,我们可将十六进制的每一位,一分为四,再合并即可。如13h,分为1和3两部分,在一分为四,0001和0011,合并去0,就是10011。
进制部分的内容至此已完全学完了!
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课