两分钟学会二进制、十进制、十六进制

2024年06月10日 02:38  ·  阅读 780

在计算机的世界中所有内容都会转化成0和1组成的二进制数,二进制是如何进行运算的?以及和十进制之间,是如何相互转换的呢?本期,我们就来介绍一下二进制的原理以及转换方法,讲二进制之前,我们先看一下十进制,十进制有0-9十个数字,也就是说满十进一。

image.png

十进制,是不是看起来很简单,那什么进制,其实很好理解,满了就进一位数嘛!

二进制、十进制和十六进制的区别是:二进制只使用0和1两个数字来表示。十进制使用0到9这10个数字来表示。十六进制使用0到9这10个数字和A到F这6个字母来表示。  
二进制十进制十六进制
使用0和1表示使用0-9表示使用A到F表示

那接下来我们看一下,二进制是如何运算的:

image.png

可以看到十进制中的3,如果用二进制表示的话需要2位数也就是11,把十六进制放在一起,我们直观的对比一下:

image.png

对于十六进制的F,如果用十进制表示的话需要二位,如果用二进制表示需要4位。那在计算机的世界中,为什么要使用二进制数呢?计算机的核心部件是cpu,cpu又是由数据以亿计的晶体管构成的,cpu能够正常工作,是由这些晶体管通电和不通电两种状态来决定,我们简化一下,你可以把这个灯泡看成一个晶体管:

image.png

它有两种状态,通电它亮了,断电它灭了。也可以用on或off来表示这个状态,当然也可以0和1来表示这个状态。这个时候你可能已经发现了这种通电和不通电分别对应二进制数中的0和1,所以计算机的底层会使用二进制来表示。

这里简单做下延伸,网络传输过程中,一般使用bit来表示,例如我们查看网卡最大速率:

[root@test ~]# ethtool bond0
Settings for bond0:
        Supported ports: [ ]
        Supported link modes:   Not reported
        Supported pause frame use: No
        Supports auto-negotiation: No
        Supported FEC modes: Not reported
        Advertised link modes:  Not reported
        Advertised pause frame use: No
        Advertised auto-negotiation: No
        Advertised FEC modes: Not reported
        Speed: 2000Mb/s
        Duplex: Full
        Port: Other
        PHYAD: 0
        Transceiver: internal
        Auto-negotiation: off
        Link detected: yes

这里网卡速率是2000Mb/s,而1G登于1000M,也就是2Gb/s。

在存储领域中,1KB通常表示1千字节。一个字节(Byte,B)由8个比特(bit,b)组成,因此1KB等于8 * 1024 = 8192比特(bit),或者等于1024个字节(Byte)。这个单位常常用于测量计算机硬件和数据存储设备的存储容量,如硬盘、内存、U盘等。

需要注意的是,存储设备的实际容量比标称容量要小,因为存储设备厂商在计算容量时通常采用10进制(即1000进位),而不是2进制(即1024进位)的计算方式。因此,实际的存储容量会比标称容量小一些。

最后我们总结一下什么是进制,说白了就是满了就进一位数,十以外的进制无处不在,特别是在时间单位的表达上尤为明显:

  • 比如分秒时就是60进制
  • 时和天之间是24进制
  • 天和周之间是7进制
  • 天到月是28/29/30/31进制不等
  • 月到年是12进制
  • 天到年是365.25进制,或者说是365/366进制
  • 年和世纪是100进制

以上就是本期内容,请问你学会了吗?如果有问题欢迎留言,另外喜欢的朋友加个关注呗!



评论
全部评论