学习计算机专业课必备的二进制基础(请刻在DNA里)

3,954 阅读5分钟

这是我参与8月更文挑战的第30天,活动详情查看:8月更文挑战

最近在学习一些计算机专业课,学习的过程中二进制的基础是必须要有的,不管是计算机网络,还是组成原理,还是操作系统,都是以二进制为基础的,所以本文总结一些二进制基础。今天,2021年8月30日,写下第一版,后面会陆续增加一些内容,增加一些应用便于更多人理解。

本文目标:

  • 理解的概念
  • 熟记常见的2的次幂,例如128是2的几次幂(2的几次幂就需要多少个二进制位)
  • 理解字节,对于1个字节能存储多少数据做到理性认知
  • 熟记16进制0-16,对应的2进制 带着问题阅读:
  1. 一个ip地址 192.168.1.1共有几位
  2. CSS中的颜色表示 #ffaaff,需要占用多大的存储空间存储
  3. 为什么计算机专业书籍中,表示内存地址大部分都是用16进制表示的,而不是10进制或者2进制
  4. javascirpt中的数字类型在计算机内存储为多少Byte
  5. 宽带的带宽是200M,为什么下载的时候怎么都达不到200M呢

如果所有的问题,你都会,就不用读了,直接退出。

进制

10进制,一位数可以是0-9,共10种可能,如果要表示第11种可能,就要进位。

类比一下,2进制,一位数只能是0或1,有2种可能。

16进制,一位数可以是0-15,有16种可能

10进制的进位规则如下:满10进一位

0  10  20
1  11
2  12
3  13
4  14
5  15
6  16
7  17
8  18
9  19

2进制的进位规则如下:满两位进一位,10进制的0是2进制0,10进制的1是2进制的1,如果要表示10进制的2,就要用两位2进制数,10

0  10  100  1000
1  11  101  1001
       110  1010
       111  1011
            1100
            1101
            1110
            1111
			 

16进制的规则,满16进一位(a表示10进制的10,b:11,c:12...)

0  1010进制的161  1110进制的172  12
3
4
5
6
7
8
9
a
b
c
d
e
f

2进制与16进制

一位二进制数,称为1bit。

image.png

1位二进制数,也就是1bit,有2种可能,可以表示数0,1

2位二进制数,2bit,有4种可能(2x2),可以表示数0,1,2,3

3位二进制数,3bit,有8种可能(2x2x2),可以表示数0,1,2,3,4,5,6,7

...

n位二进制数,有 2^n -1 种可能。

有一些常用的2的次幂需要记住,必须记在脑子里,例如看到10进制的128,就想起来是2的7次方,就想起来有7位,0000000

image.png

2进制是计算机用的,人用起来写起来并不方便,所以就有了16进制。

一个16进制,可以表示16种可能性,也就是2的4次方,就是4位2进制数,就是4bit

举个栗子,

16进制是f,表示为2进制就是1111

16进制的ff,表示为2进制就是1111 1111

规律就是,一位16进制,可以用4位2进制来表示。2位16进制,用8位2进制数来表示。

那么16进制的ffffff表示为2进制是多少位呢

字节

字节(英语:Byte),通常用作计算机信息计量单位,不分数据类型。是通信和数据存储的概念。

一个字节能存储8位2进制数据(这个是规范,需要刻在DNA里面)

1Byte =8bit

2^8是256,1个字节能表示的数就是0-255,共256种可能性。

1位16进制数能表示为4位2进制,所以一个字节能表示2个16进制。

总结如下:

1Byte
8bit             1111 1111
2个16进制位       f    f

KB,MB,GB,Kb,Mb,Gb

KB(Kilobyte) 千字节,国际单位法一般以1000来定义千,例如1千米=1000米,但是在信息领域,尤其是表示主存储容量时,千字节一般表示1024(2^10)个字节

1KB = 1024 B   2^10 Byte
1MB = 1024 KB  2^20 Byte
1GB = 1024 MB  2^30 Byte

Kb与KB是不同的,Kb是 Kilobit,

1Kb = 1024bit

我们的宽带的带宽是200M每秒,其实是200Mb/s,但是文件是以Byte为单位的,而不是bit,所以需要换算一下

200Mb / 8 = 25 MB

其实能够达到的最高下载速度是25MB/s

简单应用

一个ip地址 192.168.1.1,共32位,why?

因为ip地址是10进制表示的,ip地址用.分开,每一段的范围是0-255,就是2^8,共8位,4*8=32,一共32位。

CSS中的颜色表示 #ffaaff,需要占用多大的存储空间存储

1个Byte存储8位2进制,

1个16进制相当于4位2进制,

所以1个Byte存储2位16进制

#ffaaff存储需要 3Byte

本文就先到这里,后续要有一些内容需要补充,比如按位&``|``!左移右移以及更多的应用(在内存层面的应用,在计算机网络中的应用,在字符编码中的应用等)等我学会了,整理了,补充在这篇文章的后面。

有问题请在评论区提出。