【飞郁2022新课程】03 - 计算机底层的二进制
【飞郁2022新课程】03 - 计算机底层的二进制
听说你们学编程不想学基础?
说实话,我还不想教呢! 基础理论乏味的很,哼!凸显不出我高深的技术!
不过啊! 基础有多好,**“一定”**决定了你以后高度有多高
**“一定”要听老师的劝,前面枯燥的几天基础“一定”**要好好学
俗话说的好,听人劝吃饱饭!
我前几天去医院看一个老大爷,他就劝我
小伙子,赚钱没有用,你**“一定”**带不走…
从进制开始学习的原因
由于我们要学习编程的原理,而不只是单单的学习编程,所以就要去学习计算机底层实现的原理。
但是计算机只认识2进制,那么我们想要了解其本质,就必须了解进制。
刨根问底,方能成就大业,否则这些知识一定带不走…(Call back)
实际上我们无论写出什么样的代码,最后都是变成2进制被计算机执行的,也就是说我们要学习进制,其实主要就是要学习2进制。
从10进制的角度看待进制
10进制非常简单,我们现实生活中最常用的就是十进制。
10进制是由 0,1,2,3,4,5,6,7,8,9 共10个符号组成的逢10进1的一种进制。
这里面要注意的是,10进制中是没有10这个符号的, 哪个符号来代表10呢?其实是没有的。
10是由1和 0 ,2个符号组成的,而不是单独的一个符号。
知道了10进制的定义,我们引申出n进制定义。
n进制定义:由n个符号组成 逢n进位 。
n进制中是没有n这个符号的 。
**例:**2进制有2个符号组成,里面有2吗?
没有,逢2进位了,只有 0和1这2个符号。
生活中还有很多其他进制。
时间有60进制和24进制,分别是逢60进1和逢24进1。
一打啤酒12瓶,就是12进制,逢12进1。
进制的转换
进制我们谁都会,只是我们没有把他抽象成文字
例如
70秒你立刻就知道是1分钟零10秒,想想怎么算的呢?
25瓶你立刻就知道是两打零1个,又是怎么计算的呢?
自己莫名其妙的就会吧? 只是自己没有总结方法吧?
所以啊,我不是教你知识, 只是知识挖掘工,帮助你挖掘潜能。
看一下为什么70秒等于1分钟零10秒
70秒/进制 = 70秒/60 = 1分钟 余10秒
怎么样?得到什么启发了吗?
十进制转二进制
那么十进制3转成二进制等于多少?
3/2 = 1 余 1 十进制3 = 二进制 11 是不是很简单呢?
需要除多次的十进制转二进制大家可以不掌握,因为我们只要知道原理就可以了
例:
十进制 12 转 二进制
直接12除以2 看看有多少个进位
12/2 = 60 (此时6在第二位,但是二进制是没有6的,所以要继续除)= 300(同理继续)= 1100(完全符合2进制的要求了)
二进制转十进制
一小箱白酒可以装2瓶 ,一个礼盒可以装2小箱,一大箱又可以装二个礼盒
请问 1大箱是多少瓶? 是不是感觉自己还是会的? 答案很简单:8瓶
其实就是对应的二进制转十进制 1000 = 8,列出来可能又看不懂了
那么我们来看看原理:
一个十进制数123,1为什么在百位?2为什么在十位?3为什么在个位?
实际上123 = 11010 + 210 +3 = 1进制进制 + 2进制 +3,
2在十位的原因是因为他有2个10,是进位而来的,1在百位是因为有10个10进位而来的。
那么上面的2进制1000 实际等于 1222+022+02+0 = 8
怎么样懂了吗?
例:
二进制111转换成10进制
111 = 122 +1*2+1 = 7
这样2进制就转换成10进制了
例:
二进制 10000000000 = 十进制 1024
进制的运算
二进制加法
(101)2+(111)2=?
101
+ 111
1100
1+1=10,逢二进一
二进制减法
(1111)2-(1001)2 =?
11110
- 10011
1011
10-1=1,被减数不够减向高位借1
2.学员问答
问:老师计算机底层存的是二进制还是十进制?
答:首先同学搞乱了概念, 一个仓库里存了很多很多的酒,是按照什么进制存的?
你按照几进制,他也是那些酒,进制只是一个统计方式而已,计算机底层是用二进制来进行描述,你要转换成10进制的方式表达也是没问题的。
3.习题+考核
1.二进制加减法
101+110 111+101
1111+111 100110+101101
10110-1011 11010-10101
2.特殊的二进制加法
11+11 101+101
110+110 1101+1101
是否能发现其中规律?
3.二进制转十进制
(1111)2 (1000)2
(111)2 (101)2
(111000)2 (1001)2
4.十进制转二进制
10 15
31 64
100 255
5.应用题
大鸟有5个萝卜和5个坑,一个萝卜一个坑,他想用这些萝卜和坑来表示一个数值,那么最多能表示多少个数值?
答:最多可以表示1+(11111)2个数值,也就是10进制的32。
解析:萝卜放到坑里代表1,不放坑里代表0,最小值为0,最大值为(11111)2。
PS:本题重在理解,谢绝抬杠!否则你“一定”学不会(call back)!