今天学习了一下,进制转换;
先是二进制转十进制:
对一个二进制数,从第一位其依次乘2的n-1次方(设次二进制数长为n)【此为整数部分】,对于小数部分则依次乘2的-1,-2.....次方,将所求结果
进行求和运算得十进制数。
十进制转二进制:
让一个十进制数对2进行取模运算,直到算到1对2取模,最后将所得结果逆序排列(整数部分),小数部分则采用对小数点后数一次进行乘2运算,直到没有
小数为止,注:此处排列因为顺序排列。
例如:
(0.125)10
0.125 *2=0.25 取0;
0.25 *2 =0.5 取0;
0.5 * 2= 1 取1;
则 (0.125)10=(0.001)2
二进制转八进制:
此问题采用按3的按位分割法,即将一个二进制数按3个数为一组进行分组,分别对每组数进行取2为基数(即次第一位开始依次乘2的2次方,2的1一次方,2的0次方)进行求和
再将所得数依次按顺序抄下。
对于那些无法能按每3个分组(即位数不够按3个一组分组的二进制数,采用以下方法:整数则在其最左侧用0补足,小数部分在其最右侧用0补足)
八进制转二进制:
此问题较简单,只需对八进制数的每一位按3个一组,用二进制数展开即可,但对于算出的最右和最左侧的0,要去除:
例如“:
(375.46)8
3=(011)2
7=(111) 2
5= (101) 2
4= (100) 2
6= (110) 2
故(375.46)8=(11111101.10011)2
二进制转十六进制:
此问题与二转八类似,采用按4个一组进行分组,接下来还是与二转八一样分别求,在按位序抄下;
例如:
(10110.11)2
先补齐:
00010110.1100
在分组求
0*2^3+0*2^2+0*2^1+1*2^0=1;
0*2^3+1*2^2+1*2^1+0*2^0=6;
1*2^3+1*2^2+0*2^1+0*2^0=c;
注:十六进制数,计算按逢16进一,
故十六进制数为:1,2,3,4,5,6,7,8,9,a,b,c,d,e,f;
f为最大位表示15;
十六进制转二进制:
首先是了解一下十六进制数对应的二进制数:
接下来就是对每一个数按此展开;
十进制转8421BCD码
此问题较简单,只需将十进制数每一位用4个字节长的二进制数表示即可;
例如:
(579.8)10
5= (0101)2
7= (0111)2
9= (1001)2
8= (1000)2
(579.8)10= (010101111001.1000)2
再是8421BCD码转十进制:
此问题只需将每四个二进制数按乘2的次方进行求和运算即可;
至此进制转换结束;
目标: 总结完原码, 反码, 补码;