为什么计算机以及计算机网络协议中常用16进制?

一、计算机为什么需要十六进制?

实际上计算机本身是不需要十六进制的,计算机只需要二进制,需要十六进制的是人。

每个十六进制中的数字代表4个比特,你可以非常直观的从十六进制中知道对应的二进制是啥,比如给定一个十六进制数,假设其最后一位是9,那么你立刻就能知道将该十六进制数字转为二进制后最后四位是1001

十六进制数字9对应的二进制为1001
十六进制数字19对应的二进制为0001 1001
十六进制数字119对应的二进制为0001 0001 1001

但是如果给定一个十进制数字,同样假设其最后一位是9,你知道其对应的二进制吗,显然你是不知道的。

十进制数字9对应的二进制为1001。
十进制数字19对应的二进制为1 0011。
十进制数字119对应的二进制为111 0111。

在十进制中你必须知道所有的进位上的数字后才可以将其转为二进制,这非常不直观,显然如果你想把复杂的十进制数字转为二进制不稍加计算是搞不定的。

因此我们可以得出结论:

十六进制是二进制的好朋友,但十进制不是

那为什么十六进制是二进制的好朋友呢?

关键在于进制数16是2的4次方,24 = 16,而进制数10并不是2的整数次幂,因此8进制(23),16进制(24),32进制(25),64进制(26)等等都是二进制的好朋友。

有的同学肯定会问,那么为什么我们不使用32进制呢?

使用32进制,每5个比特位可以用一个32进制数字来表示,由于人类的数字系统只有0~9,因此在16进制中10是字母a来表示的、11:b、12:c、13:d、14:e、15:f,但如果我们使用32进制,那么16:g、17:h…31:v,这时给一个32进制数字“apple”,你的大脑可能会一团浆糊,但十六进制对人类来说基本可以应付得来,原因就在于16进制中人类熟悉的数字占据了10个,剩下的只借用了6个字母,还算简单。

因此32进制及以上都不太适合给人使用,原因就在于:

可读性太差。

此外使用十六进制还有一个重要原因:

一个字节有8个比特

我们知道内存是按照字节粒度来寻址的,因此采用的数字系统必须很好的表达一个字节,也就是8比特,从这个角度上看256进制(2^8)是最好的,因为一个256进制就是表达一个字节,但还是基于可读性的原因,256进制对于人类来说记忆负担过重,而16进制则刚刚好,一个16进制数字表示一个字节的一半(4个比特),两个16进制数字正好表示一个字节。

那为什么一个字节有8比特而不是7比特或者9比特呢?其实答案很简单:

历史原因

要知道早期的计算机可不是一个字节8比特,那时一个字节4比特、6比特或者7比特的都有。

但4比特或者6比特还是太受限制,因为我们需要把字母数字以及标点符号等等转为二进制表示,4比特或6比特能表示的数量太少。

到了1963年,ASCII正式提出,该标准使用7比特来表示字符,但当时的IBM System/360大型机采用了8比特字节,使得8比特字节开始流行起来,到后来微型计算机出现时也自然采用了这一表示方法。

现在你应该明白了吧。

第一部分转自计算机为什么需要十六进制?


二、通讯协议必须16进制输入吗?

在现代网络中,通讯协议是一种标准的规则,它指导网络设备如何交换信息。这些交换的信息必须以十六进制的形式输入,而不是其他形式,才能保证信息的一致性和准确性。本文将介绍十六进制的基本概念,讨论它为什么是通讯协议的标准输入,以及它与其他输入形式的比较。

                什么是十六进制?
  十六进制是一种数字系统,它使用16种数字(0-9和A-F)来表示数字。它可以用来表示任何数字,从0到15,也可以用来表示更大的数字,比如16,17,18,等等。十六进制的优势在于它比十进制更简洁,更容易理解。

            为什么十六进制是通讯协议的标准输入?
  因为十六进制更容易理解,更容易被网络设备识别,所以它是通讯协议的标准输入。十六进制可以更轻松地表示数字,比如一个字节(8位)可以用两个十六进制数字表示,而十进制需要三个数字。这意味着用十六进制表示的数据可以更轻松地传输,从而提高网络性能。

            十六进制与其他输入形式的比较

                  二进制
  二进制是一种基于0和1的数字系统,它比十六进制更加简洁,但是不够容易理解。它只能用来表示两个状态:0或1。因此,它不能用来表示更复杂的数据,也不能用于通讯协议。

                  八进制
  八进制是一种基于0-7的数字系统,它比十六进制更容易理解,但不如十六进制简洁。它可以用来表示更复杂的数据,但不能用于通讯协议,因为它不能提供足够的精度。

                  十进制
  十进制是一种基于0-9的数字系统,它比十六进制容易理解,但不如十六进制简洁。它可以用来表示更复杂的数据,但不能用于通讯协议,因为它不能提供足够的精度。

                  总结
  十六进制是一种数字系统,它使用16种数字(0-9和A-F)来表示数字。它比十进制更简洁,更容易理解,因此它是通讯协议的标准输入。它可以更轻松地表示数字,比如一个字节(8位)可以用两个十六进制数字表示,而十进制需要三个数字。它比二进制和八进制都更容易理解,也比十进制更简洁,因此是通讯协议的标准输入。

第二部分转自通讯协议必须16进制输入吗?


三、程序员基本功,为什么你一定要懂16进制?
此文章主要阅读后半段与内存地址有关的内容。若觉得前半段较啰嗦可以跳着看也可以跳过。

  • 27
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

约束112

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值