最后,倒着取余数,所以101的二进制表示是:1100101。二进制转为十进制使用的是按权展开法:\(1100101 = 1 \times 2^6 + 1 \times 2^5 + 0 \times 2^4 + 0 \times 2^3 + 1 \times 2^2 +0 \times 2^1 + 1 \times 2^0 = 101\)
再举一个例子:十进制数237转为二进制,如下
237/2 118 1
118/2 59 0
59/2 29 1
29/2 14 1
14/2 7 0
7/2 3 1
3/2 1 1
1/2 0 1
最后倒着取数,所以237的二进制表示是:11101101。使用按权展开法把二进制转为十进制:\(11101101 = 1 \times 2^7 + 1 \times 2^6 + 1 \times 2^5 + 0 \times 2^4 + 1 \times 2^3 + 1 \times 2^2 +0 \times 2^1 + 1 \times 2^0 = 237\)
二进制转为十进制:按权展开法的的计算公式如下:
\(N = d_{n-1}d_{n-2}...d_1d_0 = d_{n-1}r^{n-1} + d_{n-2}r^{n-2} + d_1r +d_0\)
2.小数十进制和二进制的互相转换
如果这个十进制是小数,则使用重复相乘法。例如 \(\frac{25}{32}\)转为二进制,如下:
\(\frac{25}{32} \times 2\) \(\frac{25}{16} = 1+\frac{9}{16}\) 1
\(\frac{9}{16} \times 2\) \(\frac{9}{8} = 1+\frac{1}{8}\) 1
\(\frac{1}{8} \times 2\) \(\frac{1}{4} = 0+\frac{1}{4}\) 0
\(\frac{1}{4} \times 2\) \(\frac{1}{2} = 0+\frac{1}{2}\) 0
\(\frac{1}{2} \times 2\) \(1 = 1+0\) 1
最后顺着取整数:\(\frac{25}{32}\)的二进制表示为:0.11001。现在再使用按权展开法把二进制转为十进制数:
\(N = 0.11001 = 1 \times 2^{-1} + 1 \times 2^{-2} + 0 \times 2^{-3} + 0 \times 2^{-4} + 1 \times 2^{-5} = 0.78125 = \frac{25}{32}\)
正的237使用二进制表示为:+237 = 011101101 ,负的237使用二进制表示为:-237 = 111101101,在计算机中,使用0表示正数,使用1表示负数。但计算机是怎么判断它是数字位还是符号位的呢?这就需要使用原码表示法了,在原码表示法中,使用0表示正数,使用1表示负数,规定符号位位于数值的第一位,表达简单明了,是我们最容易理解的表示法。0有两种表示法:00或10,在使用原码进行运算时,会非常复杂,特别是两个操作符号不同的时候,我们需要进行判断两个操作数得绝对值大小,使用绝对值大的数减去绝对值小的数,对于符号值,以绝对值大的为准。因此我们希望找不到不同符号操作数运算更加简单得方法,也就是可以使用正数来代替负数,使用加法操作来代替减法操作,从而消除减法。于是出现了二进制的补码表示法,补码的定义如下:
\[x = \begin{cases} x & 2^{n} > x \geq 0 \\ 2^{n+1} + x & 0 > x \geq -2^n \end{cases} \]