序:
最近做了两道基础题发现时间长没有换算算错了 写下这篇文章以复习。
上面得乘除是课本上会教得方法,加减是我在学习过程中自己总结的 就当看个思路。
2进制里只有两个数字 0 和1 没有其他任何数字
乘除:
举例:
十进制:175
二进制:10101111
- 十进制转二进制
"除2取余,逆序排列"法:
首先用2整除一个十进制整数,得到一个商和余数
然后再用2去除得到的商,又会得到一个商和余数
重复操作,一直到商为小于1时为止
然后将得到的所有余数全部排列起来,再将它反过来(逆序排列)
举例:用除2取余法十进制175转二进制
175÷2余1
87÷2余1
43÷2余1
21÷2余1
10÷2余0
5÷2余1
2÷2余0
1÷1余1
从下往上写就是10101111 到此转换完毕。
- 二进制转十进制
“位权法”:
要从右到左用二进制的每个数去乘以2的相应次方
从左往右给每一个数字赋予一个权,依旧以10101111举例
1010111
7654321
上面的是要转换的二进制,下面的是对应的每一位的权
拿二进制去乘2的权术次方再相加
(1* 2的零次方) + (1* 2的一次方)+ (1 * 2 的二次方)+(1 * 2的三次方) +(0 * 2的四次方) +(1* 2的五次方) + (0 * 2的六次方) + (1 * 2的7次方) = 1 + 2 + 4 + 8 + 0 + 32 + 0 + 128 = 175
嗯简单是简单但是太麻烦了,一个数字要转换半天。
加减:
有没有既简单还方便的办法呢?
有
我们让乘除法变成加减法。
先数一数10101111有几位?
八位,那从1开始。
128 64 32 16 8 4 2 1
如果是9位那么就是:
256 128 64 32 16 8 4 2 1
然后将要转换的2进制一一对应。
128 64 32 16 8 4 2 1
1 0 1 0 1 1 1 1
把下面有1的数字加起来
128+32+8+4+2+1=175
到此二进制转10进制结束。
十进制转二进制
175
依旧列出
128 64 32 16 8 4 2 1
拿175去从左往右减 175-128= 47 标注1
接着减发现47-64不够 标注0 ,.47-32=15 能减 标注为1,15-16 又不够 标注0 ,15-8=7 标注1,7-4=3标注1,3-2=1标注1,1-1=0标注为1。
即得出10101111
到此转换完毕
小数同理
101011.11
32 16 8 4 2 1 0.5 0.25
一一对应加或者减。
注意:小数点相当于分割点 没小数点是从1开始 有小数点是小数点后有几位就写几位。
下半部分方法如熟练算起来会很快。