
从未停步为您分享以下优质知识
二进制数转换涉及整数、小数和负数的处理,以下是具体方法:
一、二进制转十进制
按权展开法
从右至左对二进制位编号(最右为第0位),每位对应的权值为$2^n$($n$为位数),将每位数字乘以对应权值后求和。 例如:
$$1101_2 = 1 times 2^3 + 1 times 2^2 + 0 times 2^1 + 1 times 2^0 = 8 + 4 + 0 + 1 = 13_{10}$$
常见权值表:
$$begin{array}{cccccc}
位 & 2^7 & 2^6 & 2^5 & 2^4 & 2^3 & 2^2 & 2^1 & 2^0
hline
0 & 128 & 64 & 32 & 16 & 8 & 4 & 2 & 1 end{array}$$
8位二进制数可快速计算(如10010101):
$$128 + 0 + 0 + 16 + 0 + 4 + 0 + 1 = 149_{10}$$
分块简化法
将二进制数拆分为2的幂次方之和,例如:
$$110101 = 110000 + 101 = 2^5 + 2^2 + 2^0 = 32 + 4 + 1 = 37_{10}$$
适用于中等长度的二进制数
二、十进制转二进制
整数部分
采用"除2取余,逆序排列"法:
- 将十进制数不断除以2,记录余数;
- 将余数从下到上排列,高位补零。 例如:
$$254_{10} rightarrow 11111110_2$$
具体步骤:
$$254 div 2 = 127 text{ 余 } 0$$
$$127 div 2 = 63 text{ 余 } 1$$
$$63 div 2 = 31 text{ 余 } 1$$
$$dots rightarrow 1 text{ 余 } 0$$
最终结果为:
$$1000000110_2$$
负整数部分
先将对应正整数转换为二进制,取反后加1(补码表示)。例如:
$$-42_{10} = 11101100_2 rightarrow text{取反 } 00010011 rightarrow text{加1 } 00010100 = 11101010_2$$
小数部分
采用"乘2取整"法:
- 将小数部分乘以2,取整数部分;
- 将结果乘以2,再取整数部分,重复直到小数部分为0或达到精度。 例如:
$$0.125 times 2 = 0.25 rightarrow text{取整 } 0$$
$$0.25 times 2 = 0.5 rightarrow text{取整 } 0$$
$$0.5 times 2 = 1.0 rightarrow text{取整 } 1$$
最终结果为:
$$0.101_2$$
三、其他常见转换方法
二进制转八进制
每3位二进制对应1位八进制,不足补零。例如:
$$10100100_2 = 244_8$$
二进制转十六进制
每4位二进制对应1位十六