数制及进制转换

数制:也称为“计数制”,是用一组固定的符号和统一的规则来表示数值的方法。任何一个数制都包含两个基本要素:基数位权

基本概念:

数码:数制中表示基本数值大小的不同数字符号。例如:十进制中有10个数码:0、1、2、3、4、5、6、7、8、9

基数:数制中所使用数码的个数。例如:十进制使用的数码个数为 0-9 ,一共 10 个数码,所以十进制的基数为 10

位权:数制中每一固定位置对应的单位值(数制中某一位上的 所表示的数值的大小(所处位置的价值))。例如:对于十进制中数字 123,1 的位权是 100,2 的位权是 10,3 的位权是 1,对于 N进制数,整数部分第 i 位的位权为 N^(i-1) ,而小数部分第 j 位的位权为 N^-j。

十进制:逢 10 进 1
数码:0、1、2、3、4、5、6、7、8、9
基数:10
位权:对于 10.23 来说,1 的位权为 10 (10^1),0 的位权为 1 (10^0),2 的位权为 0.1 (10^-1),3 的位权为 0.01 (10^-2)

二进制:逢 2 进 1
数码:0、1
基数:2
位权:对于 10.11 来说,从左向右看,1 的位权 2 (2^1), 0 的位权 1 (2^0),1 的位权 0.5 (2^-1),1 的位权 0.25 (2^-2)

十六进制:逢 16 进 1
数码:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E
基数:16
位权:我这里就不啰嗦了,跟上面的类似,其中重点说明一下,A 表示的是数值为 10,B 为11,C 为12,D 为13,E 为 14

解释了这么多的概念有啥用呢?

对于十进制数字 123 来说,它的数值大小可以表示为:1 * 100 + 2 * 10 + 3 * 1 = 1 * 10^2 + 2 * 10^1 + 3 * 10^0

那么有人会问了,如果是小数呢?

扫描二维码关注公众号,回复: 8519260 查看本文章

对于十进制数字 0.25 来说,它的数值大小可以表示为:2 * 0.1 + 5 * 0.01 = 2 * 10^-1 + 5 * 10^-2 = 1 / (2 * 10^1 + 5 * 10^0)

通过上述表示,我们可以得到一个结论,一个数的实际数值 =(各个位置上的数值 * 对应位置的位权)之和

是不是很神奇呀? 那么我们知道了十进制的表示方法,对于二进制我们怎么处理是不是也很清楚了呢?

对于二进制数字 110 来说,它的数值大小可以表示为:1 * 4 + 1 * 2 + 0 * 1 = 1 * 2^2 + 1 * 2^1 + 0 * 2^0 

那么知道了这些有啥用呢?我们可以做进制转换呀!!!

二进制转换为十进制

1100.11 = 1 * 2^3 + 1 * 2^2 + 0 * 2^1 + 0 * 2^0 + 1 * 2^-1 + 1 * 2^-2 = 8 + 4 + 0.5 + 0.25 = 12.75

十进制转换为二进制

100.25
先转整数部分
100 = 1 * 2^6 + 1 * 2^5 + 0 * 2^4 + 0 * 2^3 + 1 * 2^2 + 0 * 2^1 + 0 * 2^0 = 1100100(2)
再转小数部分
0.25 = 0 * 2^-1 + 1 * 2^-2 = 0.01(2)
所以 100.25 = 1100100.01(2)
这个是如何计算的呢?

100 % 2 = 0            100 / 2 = 50           50 % 2 = 0         
50 / 2     = 25          25 % 2 = 1               25 / 2 = 12
12   % 2 = 0              12 / 2 = 6               6 % 2 = 0           
      6 / 2 = 3              3 % 2 = 1                 3 / 2 = 1
1     % 2 = 1                1 / 2 = 0(结束)
所以 100 =   1100100(就是通过 % 运算后的结果,倒着书写下来)
0.25 * 2 = 0.5            0.5 % 2 = 0           0.5 * 2 = 1         1 % 2 = 1(结束)
所以 0.25 = 0.01(通过 % 运算后的结果,正着书写下来)
至于这个原理大家就应该很清楚是怎么一回事了?

解释一下:

100 = 1 * 2^6 + 1 * 2^5 + 0 * 2^4 + 0 * 2^3 + 1 * 2^2 + 0 * 2^1 + 0 * 2^0

% 2 得到的是最后一个 0 * 2^0 项的系数 0
再用 100 / 2 就相当于降幂操作,将上述的表达式每个都进行降幂,就是 2^6 变为 2^5,然后再反复利用 % 运算和 / 运算就能得到每项的系数,然后把系数对应倒着写出来就得到了对应的二进制

0.25 = 0 * 2^-1 + 1 * 2^-2

* 2 进行升幂操作,此时 2^-1 变为 2^0,再进行 % 运算,得到 0 * 2^-1 项的系数 0,反复利用 * 运算 和 % 运算就能得到每项的系数,然后把系数对应正着写出来就得到了对应的二进制          

二进制转八进制

111 010(2) = 72(8) 后右向左每三位构成一个八进制数

八进制转二进制

72(8) = 111 010(2) 从左向右每三位拆解成对应的二进制数

二进制转十六进制十六进制转二进制每四位进行转换

八进制转十六进制通过先八进制转二进制,再二进制转十六进制

任意进制转换,可以先转十进制,再通过十进制再转换!!!

感谢大家的浏览,如果有什么不清楚的地方可以在下方评论,我看到会一一作出回复,嘻嘻(*^_^*)

发布了92 篇原创文章 · 获赞 23 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/assiduous_me/article/details/102295812
今日推荐