ن
二进制转十进制,十进制转二进制的算法介绍
(二进制数转换成十进制数,只需采用“按权数展开的方法”)
二进制转十进制
从最后一位开始算,依次列为第0位、第1位、第2...位第n位的数(这些数都是0或者1)乘以2的n次方得到的结果相加就是答案(十进制转二进制题目这个是没有小数的情况)
例如: 01101011. 转十进制:
第0位(指这个数的个位):1乘2的0次方=1
(十位)1乘2的1次方=2
(百位)0乘2的2次方=0
(依次类推)1乘2的3次方=8
0乘2的4次方=0
1乘2的5次方=32
1乘2的6次方=64
0乘2的7次方=0
然后:1+2+0+8+0+32+64+0=107.
二进制01101011=十进制107.
有小数的情况:以小数点为中心分开,左边整数位算法和上面的一样,小数点右边仅仅是将那个2的n次方,的n前面加个负号。上面说了,第0位是个位数,所以小数点后第一个数就说它是-1位,这样好理解点。
例如: (11011.101)B= (1×24+1×23+0×22+1×21+1×20+1×2-1+0×2-2 +1×2-3)D = (16+8+2+1+0.5+0.125)D =(27.625)D (红字就是小数点后四位展开形式)
十进制转二进制: 就是各种除以2,一直除到结果为1。
用2辗转相除至结果为1
将余数和最后的1从下向上倒序写 就是结果
例如:302转化成二进制 (这是整数情况)
例一:302/2 = 151 余0 例二100/2=50 余 0
151/2 = 75 余1 50/2=25 0
75/2 = 37 余1 25/2=12 1
37/2 = 18 余1 12/2=6 0
18/2 = 9 余0 6/2=3 0
9/2 = 4 余1 3/2=1 1
4/2 = 2 余0 1/2=0 1
2/2 = 1 余0
故二进制为 例一=100101110 例二=1100100
有小数时:整数部分换算同上。小数部分:乘以2取整,直到满足所需要的精度为止(题目有可能要求取到小数点后第几位),所得整数自左向右排列(这个就是从上往下写的意思)。
例如:(0.345)D= ( 0.01011 )B ,精确到小数点后第5位。
0.345×2=0.690 整数部分为0 取0 ←这个数是小数点后第一位
0.690×2=0.380 整数部分为1 取1
0.380×2=0.760 整数部分为0 取0
0.760×2=0.520 整数部分为1 取0
0.520×2=0.040 整数部分为1 取1
8、十六进制转换成十进制
与二进制转换成十进制类似,采用“按权展开”的方法。
(八进制转换成十进制,权数是8)
如:(146.73)O = (1×82+4×81+6×80+7×8-1 +3×8-2)D = (102.921875)D
(十六进制转十进制,权数是 16)
(1AF.E)H=(1×162+10×161+15×160+14 ×16-1)D =(431.875)D
(上面的字母A和F是十六进制里面的 A是10 F是15 E是14)
十进制转换成八、十六进制:
方法:
整数部分:除以R取余数,直到商为0止,余数从下到上排列。(R代表你要转换成哪个进制的那个数,如果转换成八进制,那么R就是8)
小数部分:乘以R取整,直到满足所需要的精度止,所得整数自左向右排列。
小结:十进制转换成其他进制,就是各种除!!转成几进制就除以几。
(注意整数部分结果和小数部分结果的书写顺序)
其他进制转换成十进制,就是各种按权数相乘,转换成几进制,权数就是几。再相加。(注意小数点隔开,第0位是个位)
接下来是二、八互转:
二转八方法:
对于整数部分,从右向左毎三位二进制数位为一组,高位不足三位时左补0,然后将毎组对应的八进制数写出,即得整数部分的八进制码。
对于小数部分,从左向右每三位二进制数位为一组,不足三位的右补0,然后将毎组对应的八进制数写出,即得小数部分的八进制码。
例:
(10100011100111)B=(010 100 011 100 111)B=(24347)O
看,红的这个0就是为了凑够三位加上去的
(10101.1010011)B=(010 101.101 001 100)B=(25.514)O
这里也是 这里两个0也是
反正就是,从小数点向两边,三位一组,不够的在两边加0凑。特别注意:转八进制是 三位一组,涉及到八转二。
八转二方法:
对于整数部分,写出毎位数对应的二进制码(八进制毎位转换成三位二进制,十六进制为四位二进制)即可。
对于小数部分,与整数部分的操作一样。
(7241.56)O=(111 010 100 001.101 110)B
这个好像有个对照表,其实原理也简单
比如上面八进制数里面那个7,对应的三位二进制是111,这个可以算出来
111 = 1×22+1×21+1×20=7 010 = 0×22+1×21+0×20 = 2
(这个相当于是把二进制的111转换成十进制的7,如果没记住换算表,可以这样算。)
二转十六
对于整数部分,从右向左毎四位二进制数位为一组,高位不足四位时左补0,然后将毎组对应的十六进制数写出,即得整数部分的十六进制码。
对于小数部分,从左向右每四位二进制数位为一组,不足四位的右补0,然后将毎组对应的十六进制数写出,即得小数部分的十六进制码。
例:
(10100011100111)B=( 0010 1000 1110 0111)B=(28E7)H
(10101.1010011)B=(0001 0101.1010 0110 )B=(15.A6)H
1010 = 1×23+0×22+1×21+0×20 = 10 = A
除了是四位二进制一组外,计算和八进制转二进制一样,哦,特别要注意十六进制的书写,就是10及10以上的数是用A-F这留个字母表示的
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论