本文主要是介绍【信息学奥赛】CSP-J/S初赛04 进制转换相关问题(二、八、十六进制与十进制互相转换),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
大家好,我是bigbigli,今天我们学习初赛中常考的一个数学内容——进制转换
进制转换
常用的数制
权:数制中某一位上的1所表示的数值的大小,比如十进制中的123,1的位权是100,2的位权是10,3的位权是1。
进制 | 基数 | 基数个数 | 进数规律 |
---|---|---|---|
十进制 | 0 1 2 3 4 5 6 7 8 9 | 10 | 逢十进一 |
二进制 | 0 1 | 2 | 逢二进一 |
八进制 | 0 1 2 3 4 5 6 7 | 8 | 逢八进一 |
十六进制 | 0 1 2 3 4 5 6 7 8 9 A B C D E F | 16 | 逢十六进一 |
某进制转十进制
二进制数、八进制数、十六进制数转换为十进制数的方法:**按权展开求和法。**即把多项式按十进制的规则进行求和,所得结果即是该数的十进制。
例如:二进制数1011.01转十进制
(1011.01)2 =(1×23+0×22+1×21+1×20+0×2-1+1×2-2)10
=(8+0+2+1+0+0.25)10
=(11.25)10
十进制转某进制
整数部分:十进制整数转换成K进制整数的方法是倒除法,即除以K直至商为0,倒取余数。
口诀:除以K取余,逆序排列
例如:十进制整数转二进制数 (89)10 =(1011001)2
小数部分:十进制整数转换成K进制小数的方法是取整法,即小数部分循环乘以K直至为0,顺序取整数部分。
口诀:乘K取整,顺序排列
例如:十进制小数转二进制数 (0.625)10= (0.101)2
八进制与二进制相互转换
二进制数转换成八进制数:从小数点开始,整数部分向左、小数部分向右,每 3位为一组用一位八进制数的数字表示,不足 3位的要用“0”补足 3位,就得到一个八进制数。
例:将二进制的 10110.0011 转换成八进制:
即:(10110.011)2 = (26.14)8
八进制数转换成二进制数:把每一个八进制数转换成 3位的二进制数,就得到一个二进制数。
例:将八进制的 37.416转换成二进制数: 37.416 → 011 111 .100 001 110
即:(37.416)8 =(11111.10000111)2
十六进制与二进制相互转换
二进制数转换成十六进制数:从小数点开始,整数部分向左、小数部分向右,每 4 位为一组用一位十六进制数的数字表示,不足 4位的要用“0”补足 4位,就得到一个十六进制数。
例:将二进制数 1100001.111 转换成十六进制:0110 0001.1110→61.E
即:(1100001.111)2 =(61.E)16
十六进制数转换成二进制数:把每一个八进制数转换成 4 位的二进制数,就得到一个二进制数。
例:将十六进制数 5DF.9 转换成二进制:0101 1101 1111.1001
即:(5DF.9)16 =(10111011111.1001)2
注:以上所说的二进制数均是无符号的数。这些数的范围如下表:
无符号位 二进制数位数 | 数值范围 | 十六进制范围表示法 |
---|---|---|
8位 二进制数 | 0~255 (255=28(-1)) | 00~0FFH |
16位 二进制数 | 0~65535(65535=216(-1)) | 0000H~0FFFFH |
32位 二进制数 | 0~232-1 | 00000000H~0FFFFFFFFH |
这篇关于【信息学奥赛】CSP-J/S初赛04 进制转换相关问题(二、八、十六进制与十进制互相转换)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!