十进制数转二进制

2019-06-18  本文已影响0人  茄茄茄

十进制数转二进制数

前言

十进制是以十为基础的数字系统。

"满十进一,满二十进二, ...",以此类推。

十进制数中每一个位上可能使用的数值为(1,2,3,4,5,6,7,8,9,0),个位数上的数字表示未满十的数,即含有多少个10^0;十位数上的数表示含有几个十,即含有多少个 10^1;百位数的数表示含有多少个100,即含有多少个 10^2。以此类推,一个 N(代表正整数)位十进制数中,从右往左第 i 位上的数字表示含有多少个 10^(i-1) (i 代表正整数,起始值为 1),这些值(每个位上的数字乘以表示的数量级)的和即构成了这个十进制数的值。

那么 4 位的正整数 hjkl (l 代表个位数上的数字,k 代表十位数上的数字,j 代表百位数上的数字,h 代表千位数上的数字) 就可以这样表示 h*10^(4-1) + j*10^(3-1)+ k*10^(2-1)+ l*10^(1-1)

同理对于二进制(每一个位上可能使用的数为 0,1)来说,一个 N(代表正整数)位二进制数中,从右往左第 i 位上的数字表示含有多少个 2^(i-1), i 代表正整数,起始值为 1。

十进制整数转二进制

前言讲到十进制与二进制位上代表的含义,那十进制数转二进制数就简单了。

将一个十进制数转二进制,其实就是一个数值从一种表示方式转换到另一种表示方式。即由原来每个位上表示的含有几个 10^(i-1) 转化为每个位上含有几个 2^(i-1),i 表示从右往左第 i 位,起始值为 1 。

辗转相除法

整数部分:除以2,取出余数,商继续除以2,直到得到0为止,将取出的余数逆序。
为什么是取余数,因为余数表示 “未凑满上一位,溢出来的那一部分”

例子:

22 转二进制的计算过程  

22 / 2  11 余 0
11/2     5  余 1
5  /2      2  余 1
2  /2      1  余 0
1  /2      0  余 1  

得到22的二进制是10110
小技巧

一般算比较小的数字的话,就先找小于并且临这个数最近的2的N次方。然后依次。

比如 37 
32 + 4 + 1
对应的就是 100101(32 16 8 4 2 1 有的写1,反之写0)。

浮点数转二进制

浮点数转二进制道理跟整数转二进制是一样的。但是有一点 需要注意的是,二进制浮点数的小数位,每一位(从左往右)表示的是 2^(-i) ,i 从 1 开始算起。

浮点数转二进制的时候,整数部分与小数位部分要分开计算转换。

小数部分:除以2的倒数相当于乘以2,取整,小数部分继续乘以2,取整,直到小数部分0为止,将整数顺序排列。

为什么是取小数部分继续运算呢?因为在每一次除以2的倒数得到的结果中,小数部分也是表示的是 “未凑满上一位高位,溢出来的那一部分”。注意在小数位中,每一位表示的数量级也是从左往右递减的。

例子:

0.8125 转二进制的计算过程  

0.8125x2=1.625 取整1,小数部分是0.625  
0.625x2=1.25 取整1,小数部分是0.25  
0.25x2=0.5 取整0,小数部分是0.5  
0.5x2=1.0 取整1,小数部分是0,  

得到0.8125的二进制是0.1101。
上一篇下一篇

猜你喜欢

热点阅读