在学习java之前,我们先学习一下二进制的内容,
为什么要学习二进制呢?
我们往计算机存的xxx.txt,xxx.mp3,空空.avi啊,在我们看来是文字,歌曲,电影,但实际上在计算机里全都是以二进制进行存储计算的,学习二进制有助于让我们对我们的编程有更好的理解。
二进制是什么?
先说说十进制,十进制实际上源于我们绝大部分人类有10根手指,可以方便的让我们计算的时候,勾手指头算算。十进制我们也很熟悉了,它由0-9十个数字组成,逢10进一位,也就是0,1,2,3,4,5,6,7,8,9,到了9之后,再加一个,就变成了10(请读一零),再增加就是11,12,13,14..........
再看看二进制,同样是进制,道理是一样的,十进制是逢十进一位,(9+1成十,那就进一位,也就是一位数变两位数,成为10),那么二进制就是逢2进一位,也就是二进制是由0和1两个数字组成的。
咱们先对应一下:
十进制 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
二进制 | 0 | 1 | 10 | 11 | 100 | 101 | 110 | 111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 | 10000 | 10001 | 10010 |
为什么是这样呢?其实非常简单。咱们把二进制一个个往后推看看:
首位0,接着0+1变成1没问题吧;
1再加1,现在是二进制,逢2进一位,也就成了 一零(yi ling);
一零+1,成 一 一(yi yi)
11加1,可以想象成十进制的99+1,个位往上进一位,十位也要进一位,那就成了100
100+1................接下去的自己往后算算吧
这样只要一个个算,任何数字我们都可以把任意的十进制的数转成对应的二进制,但是假如问你十进制为100的对应的二进制是多少,你要一个个加,是不是有点忒费劲了。
十进制和二进制的转换
十进制转二进制:
将十进制的数除以2,得到的余数再除以2,一直除下去,直到结果为0.
举例:将十进制的9转成二进制。
解读:首先把9除以2得到结果4余1
接着把上一步得到的结果4 除以2,得到结果2余0
然后把上一步得到的结果2 除以2,得到结果1余0
最后把上一步得到的结果1 除以2,得到结果0余1
搞定! 二进制的结果就是把所有的余数至下往上排列的值 即——1001,看清楚,是把所有的余数自下往上排列 ↑
练习1:
将十进制的数88转换成二进制,可将答案写在评论区。
能把十进制转成二进制了,那二进制如何转回十进制呢?
提示:目前到此并未涉及符号位概念,符号位概念将在下篇引入
比如现在有二进制数:1110,要转成十进制
转换方法:将二进制的数从最低位(最右的数)往最高位(最左的数) 从0开始数,
比如咱们现在要算的数1110,
这个结果,我们叫做权位,也就是
二进制数: 1 1 1 0
对应的权位: 3 2 1 0
公式:
十进制结果 等于 2的权位次方 乘以 对应的二进制的数 之和
按我们的例子也就是: 十进制结果 = (2的3次方 * 1) + (2的2次方 *1) +(2的1次方*1)+(2的0次方*0)
也就是 8*1 + 4*1 + 2*1 + 1*0 = 14
好了,到此我们已经会了十进制和二进制的相互转换。
练习2:
将二进制数1110110转换成十进制,可以将结果写在评论区。