模板来进行转换:
×128 ×64 ×32 ×16 ×8 ×4 ×2 ×1
这个模板可以将一个数转换最大长度为8的二进制数,但是它很容易扩展。在使用模板的时候,将8位二进制数填入到上面一行的格子里,每个格子一位。做8个乘法运算,然后将结果填入到下面一行的8个小格子里。再将这8个格子中的数相加就会得到最终结果。下面就举例说明如何得到与二进制数10010110相等的十进制数。
×128 ×64 ×32 ×16 x8 x4 x2 x1
$$
[ 1 2 8 ] + [ 0 ] + [ 0 ] + [ 1 6 ] + [ 1 6 ] + [ 0 ] + [ 4 ] + [ 2 ] + [ 0 ] = [ 1 5 0 ]
$$
将十进制数转换成二进制数就没那么直接了。下面是一个能够帮你将0\~255范围内的十进制数转换为二进制数的模板。
$$
\pm 1 2 8 + 6 4 + 3 2 + 1 6 + 8 + 4 + 2 + 1 + 1
$$
$$
\square \square \square \square \square \square \square \square
$$
这个转换实际上比看上去要麻烦得多,因此一定要仔细地按照下面的指导来操作。将整个十进制数(小于或等于255)填入到上面一行最左端的格子中。用第一个除数(128)去除这个数。所得的商填入正下方的格子(左下角的格子),余数填入右边的格子(上面--行左数第二个格子)。用第一个余数再除以下一个除数64。依照模板的顺序用同样的方法继续进行下去。
要记住,每次求得的商只能是0或者1。如果被除数小于除数,商为0,余数就是被除数。如果被除数大于或等于除数,那么商为1,余数就是被除数减去除数所得之差。下面以150为例进行转换。
$$
+ 1 2 8 + 6 4 + 3 2 + 1 6 + 8 \neq 4 + 2 + 1 + 1 6
$$
$$
\boxed { ! } \boxed { \textrm { o } } \boxed { \textrm { o } } \boxed { ! } \boxed { \textrm { o } } \boxed { ! } \boxed { \textrm { u } } \boxed { \textrm { o } }
$$
如果需要对两个二进制数进行加法或乘法,直接运算可能会比转换成十进制再进行
编码隐匿在计算机软硬件背后的语言
66