进制转换算法是怎么算

进制转换,在高速发展的现代社会,计算机浩浩荡荡地成为了人们生活中不可缺少的一部分,帮助人们解决通信,联络,互动等各方面的问题 。今天我就给大家讲讲与计算机甚至日常生活有密切相关的“进制转换”问题 。
正数进制转换算法:
我们以(25.625)(十)为例讲解一下进制之间的转化问题 。
十进制--->二进制
对于整数部分,用被除数反复除以2,除第一次外,每次除以2均取前一次商的整数部分作被除数并依次记下每次的余数 。另外,所得到的商的最后一位余数是所求二进制数的高到位 。

进制转换算法是怎么算




十进制转,N进制 。
对于小数部分,采用连续乘以基数2,并依次取出的整数部分,直至结果的小数部分为0为止 。故该法称“乘基取整法” 。
给你一个十进制,比如:6,如果将它转换成二进制数呢?
10进制数转换成二进制数,这是一个连续除以2的过程:
把要转换的数,除以2,得到商和余数,
将商继续除以2,直到商为0 。最后将所有余数倒序排列,得到数就是转换结果 。
听起来有些糊涂?结合例子来说明 。比如要转换6为二进制数 。
“把要转换的数,除以2,得到商和余数” 。
那么:

进制转换算法是怎么算



十转二示意图
要转换的数是6, 6 ÷ 2,得到商是3,余数是0 。
“将商继续除以2,直到商为0……”
现在商是3,还不是0,所以继续除以2 。
那就: 3 ÷ 2, 得到商是1,余数是1 。
“将商继续除以2,直到商为0……”
现在商是1,还不是0,所以继续除以2 。
那就: 1 ÷ 2, 得到商是0,余数是1
“将商继续除以2,直到商为0……最后将所有余数倒序排列”
好极!现在商已经是0 。
我们三次计算依次得到余数分别是:0、1、1,将所有余数倒序排列,那就是:110了!
6转换成二进制,结果是110 。
把上面的一段改成用表格来表示,则为:

被除数 计算过程 商余数 6 6/2 3 0 3
3/2 1 1 1 1/2 0 1
(在计算机中,÷用 / 来表示)
二进制--->十进制
二进制数转换为十进制数
二进制数第0位的权值是2的0次方,第1位的权值是2的1次方……
所以,设有一个二进制数:0110 0100,转换为10进制为:
下面是竖式:
0110 0100 换算成十进制
第0位 0 * 20 = 0
第1位 0 * 21 = 0
第2位 1 * 22 = 4
第3位 0 * 23 = 0
第4位 0 * 24 = 0
第5位 1 * 25 = 32
第6位 1 * 26 = 64
第7位 0 * 27 = 0
公式:第N位2(N)
---------------------------
100
用横式计算为:
0 * 200 * 211 * 220 * 230 * 241 * 251* 260 * 27 = 100
0乘以多少都是0,所以我们也可以直接跳过值为0的位:
1 * 221 * 251*26 = 100
十进制--->八进制
10进制数转换成8进制的方法,和转换为2进制的方法类似,唯一变化:除数由2变成8 。
来看一个例子,如何将十进制数120转换成八进制数 。
用表格表示:
被除数 计算过程 商 余数
120120/8150
1515/817
11/801
120转换为8进制,结果为:170 。
八进制--->十进制
八进制就是逢8进1 。
八进制数采用 0~7这八数来表达一个数 。
八进制数第0位的权值为8的0次方,第1位权值为8的1次方,第2位权值为8的2次方……
所以,设有一个八进制数:1507,转换为十进制为:
用竖式表示:
1507换算成十进制 。
第0位 7 * 80 = 7
第1位 0 * 81 = 0
第2位 5 * 82 = 320
第3位 1 * 83 = 512
--------------------------

推荐阅读