01. 二进制原理

道家阴阳启发了莱布尼茨提出二进制!

1. 为什么是二进制?

1.1 二进制与硬盘(磁盘)

硬盘也叫磁盘,它内部是排列整齐的一个个小磁体。

磁盘上面有“电刷”,磁盘可以转动,“电刷”也可以上下移动,过程中“电刷”会刷过每个小磁体,可以知道磁体是否有磁性,并且电刷会放电来控制小磁体是否有磁性。

01. 二进制原理_第1张图片

“电刷”刷过磁盘中一小段,得到上面排列整齐的小磁体的磁性顺序组合,我们假设有磁性用1表示,无磁性用0表示,假如得到 01100001(8个小磁体),那它代表什么意思呢?

8个小磁体的是否有磁性总共有28=256种可能, 从0000000011111111,假如我们提前定义好这256种每个排序顺序代表的含义,那么就知道01100001代表着什么了,事实上早在计算机刚出来的时候就已经定义好了,那就是ASCII码,通过查询ASCII码表知道01100001代表的是小写a

1.2 二进制与集成电路

IC是集成电路(Integrated Circuit)的简称。

如果集成电路使用的电源电压为+5V,那么引脚状态就只有0V和+5V。

我们将 +5V电压(高电压)表示1,0V电压(低电压)表示0。

如下集成电路的8个引脚输出(或输入)电压分别为0V、+5V、+5V、0V、0V、0V、0V、+5V,用01表示就是01100001,查询ASCII表就知道它表示的就是输出(或输入)字母a。

01. 二进制原理_第2张图片

在我们的数以亿计的电子元件中,都是通过高低电压的输入或输出传递二进制信息的。

1.3 二进制与信号传输

信号是通过波传递的,包括我们用的4G/5G网络、WIFI、广播、蓝牙等等都是通过波传递信号,只是他们用的频段不一样。

包括声音也是一种我们人耳可以听到的波。

01. 二进制原理_第3张图片

假如我们接收到这样一段波形,波峰表示1,波谷表示0,这一段波就是01100001,查询ASCII表就知道它表示的字母a。

01. 二进制原理_第4张图片

实际中通过波传递信号非常复杂,波有正弦波、方波、脉冲等,传输中还需要调制解调等,这里大概了解一下波传输信号与二进制关系就行了!

现在知道了为什么是二级制?因为集成电路中通过高低电压来传递信息,磁盘中通过磁性有无来存储数据,信号通过波峰波谷来传输。

2. 比特与字节

2.1 比特与字节

二进制位也叫比特位,一个二进制数也叫做一个比特,英文就是bit。

8位二进制数被称为一个字节(Byte)。

字节是最基本的信息计量单位。比特位是最小单位,字节是基本单位。内存和磁盘都使用字节单位来存储和读写数据,使用位单位则无法读写数据。因此,字节是信息的基本单位。

2.2 百兆网速的实际下载速度

营业厅说的他们的下载网速达到100兆,为啥你实际下载速度只有10多兆?因为营业厅说的下载网速单位是bit,而实际上下载速度只会以Byte计量。 100bit = 12.5Byte。

2.3 二进制的16进制表示法

如果用二进制01来表示字节会很繁琐,更多情况下我们会用
两个16进制数表示一个字节,第一个16进制数表示前4位二进制数,第二个16进制数表示后四位二进制数。如下:

01. 二进制原理_第5张图片

  • 01100001用16进制表示是61。
  • 11110001用16进制表示是F1。

3.进制转换

3.1 十进制转二进制

将一个十进制数转换成二进制数,可以通过模2法:

不断把十进制数除以2,直到商为0为止,每一步得到的余数即为二进制数的每一位(由下往上排列)。例如,将十进制数13转换成二进制数的过程如下所示:

01. 二进制原理_第6张图片

因此,13的二进制表示是1101。

3.2 二进制转十进制

将一个二进制数转换成十进制数,可以通过以下方法实现:将每一位上的二进制数按权相加即可。例如,将二进制数1101转换成十进制数的过程如下所示:

因此,1101的十进制表示是13。

3.3 十进制转字节

将一个十进制数转换成一个字节,可以直接将十进制数转换成对应的二进制数,然后在不够8位的情况下在左侧填充0,直到形成一个8位二进制数。例如,将十进制数47转换成字节的过程如下所示:

  • 47的二进制表示是00101111
  • 在左侧填充0,形成一个8位二进制数:00101111

因此,47的字节表示是00101111。

3.4 字节转十进制

将一个字节转换成十进制数,可以直接将字节转换成对应的二进制数,然后按权展开,计算得到十进制数。例如,将字节11001101转换成十进制数的过程如下所示:

因此,11001101的十进制表示是201。

4. 字节单位

4.1 换算公式

手机上的128g到底代表什么?

要知道手机上的128g是什么含义?

还需要掌握单位换算公式

  • 1g=1024m(兆) (210=1024)

  • 1m=1024k

  • 1k=1024Byte(字节)

  • 1Byte = 8bit(比特位/二进制位)

4.2 128g可以存多少张照片

手机存储空间128g就表示手机可以存储 128*1024*1024*1024个字节,也就是 128*1024*1024*1024*8个二进制数。如果一张照片大小是10m(兆),这已经是很大的一张照片了,那么128g可以存放128*1024/10=13107张照片,一万三千多张照片。

4.3 程序员说的10K薪资

程序员说的10K薪资要比普通人多240元。

5. 最后

5.1 破译一段二进制数

这里给出一段二级制数
01101000 01100101 01101100 01101100 01101111
(5个字节),已知它的的编码方式是ASCII码,那你可以知道它表达什么意思吗?

01. 二进制原理_第7张图片

5.2 汉字需要几个字节编码

ASCII编码是最简单的编码方式,只需要1个字节(8位),用2^8=256种表示英文字母和符号的确够了,但是中文有那么多汉字怎么办呢?

存储汉字时,字符编码不同,汉字所占用的字节数也就不同。在 GBK字符编码下,一个汉字占用2个字节。而在 UTF-8 字符编码下,一个汉字占用3个字节。

6. 其它

6.1 ASCII码对照表

ASCII码是由美国信息交换标准委员会(American Standard Code for Information Interchange,简称ASCII)于1963年制定的。

01. 二进制原理_第8张图片

关注微信公众号:“小虎哥的技术博客”。

你可能感兴趣的:(深入编程原理系列,编程原理,程序底层)