二进制都不了解?也配做什么程序员???
最近在学习一些计算机专业课,学习的过程中二进制的基础是必须要有的,不管是计算机网络,还是组成原理,还是操作系统,都是以二进制为基础的,所以本文总结一些二进制基础。今天,2021年8月30日,写下第一版,后面会陆续增加一些内容,增加一些应用便于更多人理解。
本文目标:
- 理解
位
的概念 - 熟记常见的2的次幂,例如128是2的几次幂(2的几次幂就需要多少个二进制位)
- 理解字节,对于1个字节能存储多少数据做到理性认知
- 熟记16进制0-16,对应的2进制
带着问题阅读:
- 一个ip地址
192.168.1.1
共有几位 - CSS中的颜色表示 #ffaaff,需要占用多大的存储空间存储
- 为什么计算机专业书籍中,表示内存地址大部分都是用16进制表示的,而不是10进制或者2进制
- javascirpt中的数字类型在计算机内存储为多少Byte
- 宽带的带宽是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 10(10进制的16)
1 11(10进制的17)
2 12
3
4
5
6
7
8
9
a
b
c
d
e
f
2进制与16进制
一位二进制数,称为1bit。
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
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
本文就先到这里,后续要有一些内容需要补充,比如按位&``|``!
,左移
,右移
以及更多的应用(在内存层面的应用,在计算机网络中的应用,在字符编码中的应用等)等我学会了,整理了,补充在这篇文章的后面。
有问题请在评论区提出。
链接:https://juejin.cn/post/7002088412903637022