相信学过计算机的同学一定对十进制二进制较为熟悉,计算机底层的通讯就是二进制,那怎么快速对一个十进制数转化为二进制数呢?
十进制数制系统
十进制(以十为基础进位)数系的每一个位值有十个可能的值(0、1、2、3、4、5、6、7、8、9、)
二进制(以二位基数进位)数系只有两个可能的值,即0和1。
正整数的十进制转化为二进制
方法一
重点:除二取余,倒序排列
解释:将一个十进制数除以二,得到的商再除以二,以此类推直到商等于一或零时为止,倒取将取得的余数,即换算为二进制的结果。
例如把52换位二进制数
522=26······0
262=13······0
132=6······1
62=3······0
32=1······1
1
52除以2得到的余数依次为:0、0、1、0、1、1,倒序排列,所以52对应的二进制数为110100。
由于计算机内部表示数的字节单位都是定长,以二次幂展开,或者八位,或者十六位,或者三十二位······。于是一个二进制数用计算机表示时,位数不足二次幂时高位上要补足若干个0.那么
(52)10=(00110100)2
方法二
用十进制数减去离十进制最近的(小于十进制二)的次幂,例如52,最近的二次方幂为如减完为负数则二进制位记为0,若减完为正数则二进制位记为1,用取得的数减去,直到减到.
以52为例
52-=20······1
20-=4 ······1
4-·······0
4-=0······1
0-······0
0-······0
得到的二进制数正序排列为110100,补齐位数为00110100
(52)10=(00110100)2
从最低位(最右)算起,位上的数字乘以本位的权重,权重就百是2的第几位的位数减一次方。
比如第2位就是2的(2-1次)方,就是2;第8位就是2的(8-1)次方是128。把所有度的值加起来。
例如(00110100)2转换为十进制
0 0 1 1 0 1 0 0
0*+0*+1*+1*+0*+1*+0*+0*=52