进制转换(以常见的二进制,8进制,16进制举例)

什么是进制?

参考百度百科的说法:进制也就是进位计数制,是人为定义的带进位的计数方法.对于任何一种进制---X进制,就表示每一位上的数运算时都是逢X进一位。 十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。
通俗说就是 一种人为规定的进位方法,这里需要强调一下,因为进位了, 比如2进制逢2进1,8进制逢8进1等等,所以:
二进制数里没有2 比如 1001 , 错误示例: 12
8进制数里没有8 , 比如 249, 错误示例: 18
10进制里也没有十 ,(注意:这里指的 没有 是指没有单个位数的一个数, 我们常见的10 实际上因为到了9以后逢10,然后进了一位,从一位数的9 变成了 1 0 两位数,并没有单独表示10的这么一个数)

16进制

根据上文中的说法, 16进制应该没有16, 但是阿拉伯数组只有10个(即0-9),那该怎么办呢?
对于9以后的数,我们用字母表示, 比如: 在16进制中, 我们单个位数上的数字有 1,2,3,4,5,6,7,8,9,(重点来了),在9以后,我们用 a表示10, b,表示11,c表示12...最后到f代表15,因为是16进制没有16嘛,所以到f就结束

进制转换

整数转换

2进制转10进制

由于常见的是2进制,所以下面我们拿2进制举例,道理都是一样的
首先看一个二进制数, 比如 101
方法:也就是说,将二进制数转换为十进制数,就是将每个位数的数(只有1或者0)乘2的n次方(这个n就是由从右边数的第n位,注意右边第一位从0开始)
image

拓展:n进制转换为10进制

方法与2进制也基本相同,只是将上述的2次方换为n即可
例如, 16进制的 10 就等于十进制的 0*(16^0) + 1*(16^1) = 16

10进制转n进制

十进制转二进制:
  1. 将要转换的数逐渐除以n(2进制就是n就是2),余数保留,直到最后的商等于0为止
  2. 最后将得到的余数逆序摆出得到的数就是对应的二进制数
    例如十进制的302: ( "/"代表除以的意思)
    302/2 = 151 余0
    151/2 = 75 余1
    75/2 = 37 余1
    37/2 = 18 余1
    18/2 = 9 余0
    9/2 = 4 余1
    4/2 = 2 余0
    2/2 = 1 余0
    1/2=0 余1
    得到的余数依次是0 1 1 1 0 1 0 0 1,将其逆序摆出得到的数为100101110,就是302的二进制数

将2进制转换为8进制(m进制转换为n进制)

我们可以先将2进制其转换为我们熟悉的10进制,将10进制再转换为8进制即可,这里不在赘述

小数转换

十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并。
十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。
例如把 (173)10 转换为二进制数。
image


十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。
具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数 部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。
然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。
例如把(0.8125)转换为二进制小数。
image

[转载]分数转二进制

作者:大脑壳家电团
链接:https://www.zhihu.com/question/27908137/answer/38588258
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

我们转换整数部分用的是短除法, 那么类似的, 转换小数用的是乘法. 其基本做法是, 乘以2, 不满1写0, 满1写1并去掉积中的1, 然后积再继续乘2.
如1/3:

首先, 我们写下

接着, 1/3 乘以2, 得2/3, 不到1, 因此, 我们接着写下0

0.0

接着, 2/3 乘以2, 得4/3, 超过1, 因此, 接着写下1

0.01

4/3去掉1是1/3, 我们发现了循环, 因此, 循环节是01

posted @ 2022-03-10 09:45  南城小友  阅读(1272)  评论(0编辑  收藏  举报