一:什么是进位制?

进制也就是进位计数制,是人为定义的带进位的计数方法,也有不带进位的计数方法,比如原始的结绳计数法,唱票时常用的“正字计数法,以及外国人常用的tally mark计数(四条竖杠和一条斜线)
基础知识——进位制_C#
基础知识——进位制_C#_02
基础知识——进位制_经验分享_03

 

基数:某数字可以使用的数码个数,通俗说就是这个数字有多少位。
数码:一组用来表示某种数制的符号,这个数字可以由什么数字组成。


二:常见的进位制

十进制,二进制,八进制,十六进制

为什么要引入十进制呢?
因为我们生活中使用十进制,而二进制,八进制,十六进制这些都是2的次幂,八和十六是最贴近十的2的次幂。


三:进制的快速记法

基础知识——进位制_C#_04     基础知识——进位制_经验分享_05     基础知识——进位制_C#_06
二进制,八进制,十六进制每多一个0就相当于十进制的数字乘以一个进制。


四:十进制(Decimal)

我们生活中所使用的进制,因为每个人都有十个手指,人类刚开始都是用手指计数的,即使是现在的小朋友算数也还是喜欢掰手指计算,所以人类最习惯用十进制。
基数为10,数码为0-9,逢十进一,符号为D。


五:二进制(Binary)

计算机中所使用的进制,因为二进制从硬件上比较容易实现,任何事物最少也有两种不同的状态,所以区分成两种状态比较容易。但是要将一个硬件硬生生地区分成十种不同的状态,这样就比较复杂了。
基数为2,数码为1-2,逢二进一,符号为B。

二进制的可读性很差,例如两个二进制数字进行比大小,都十分难分辨:
基础知识——进位制_C#_07


六:八进制(Oct)

基数为8,数码为0-7,逢八进一,符号为0。


七:十六进制(Hex)

基数为16,数码为0-9和A-F,逢十六进一,符号为0X或0x。


八:十进制与其他进制的转换

辗转相除法:用这个十进制数字除以进制,再用商除以进制,直到商为0,把余数倒着连起来。
基础知识——进位制_C#_08

17(D)=10001(B)
17(D)=21(0)
17(D)=11(0X)


九:其他进制转十进制

每一位的数字乘以进制的位数-1次方,再相加。

1001(B)=17(D)
21(0)=17(D)
11(0X)=17(D)


十:二进制与八进制,十六进制相互转换

一个八进制位=三个二进制位
一个十六进制位=四个二进制位
从右向左依次取位数,展开的数字就是得数

1100(B)=14(0)
1100(B)=C(0x)


十一:参考表
基础知识——进位制_C#_09