c语言二进制转换十进制_网络中的数制系统--二进制十六进制与十进制之间的相互转换...

网络中计算机的32位IPv4地址以二进制显示,也会以点分十进制显示。而IPv6的地址是128位,是由数字和A-F组成的十六进制系统。因此,了解并且学会在其三者之间相互转换是非常重要的,让我们能够更好的了解它们。

二进制数制系统

IPv4地址以二进制开头,仅包含0和1。主机,服务器和网络设备均使用二进制编址,即IPv4地址。

每个地址包含32位字符串,分为四个部分,被称为二进制八位组。e.g. 11000000.10101000.00001010.00001010

为了方便使用,IPv4地址通常表达为点分十进制记法。

二进制位置记法

在进入二进制之前,我们看一下日常最熟悉的十进制的位置计数法。十进制以10为基数,即各位数的值为0-9。

v2-9d3dcde469ae912e3a3d651b44e2e493_b.jpg

举个例子,1009 = 1*10³ + 0*10² + 0*10¹ + 9*10⁰

相似地,2为基数的二进制也是如此,各位数为0-1

v2-1312bc901d373a2f43d605e7d92f7e4b_b.png

举个例子,11000000 => 1*2⁷ + 1*2⁶ + 2⁵ + 2⁴ + 2³ + 2² + 2⁰ = 192

这样就把二进制通过位置计数法计算转换成了十进制。

从十进制到二进制

我们已经学会了从二进制转换到十进制,现在开始学习十进制到二进制。

(此处我们仅研究八位二进制数)

假设当前的十进制数为n,我们开始转换。

如果n>=128, 此时,第一位即为1并且n减去128,否则为0.

接着,如果n>=64,第二位为1并减去64,否则为0.

如果n>=32, 第三位为1并减去32,否则为0.

根据位置值一直这样进行到与1比较并记录,最后得到的八位数即为n的二进制值。

举个例子,n=192,

v2-733255cd3d43f54e0c66def203799e1b_b.jpg

经过一系列的比较且计算,我们得到192的二进制值为11000000,这与我们上面二进制转换成十进制结果一致。

学习了二进制与十进制之间的相互转换,计算一下IPv4地址192.168.10.10的二进制值和11000000.10101000.00001010.00001010的十进制值,感受一下IPv4地址的转换,逐渐掌握这个技能,更好了解网络中的IPv4编址。

十六进制数制系统

我们解决了IPv4地址解读的问题,如开篇所说IPv6地址是以十六进制数组成。此外,在网络中,以太网MAC地址也是以十六进制数表示。

十六进制以16为基数,其中添加了字母A-F。

我们一起看一下十进制,二进制与十六进制值的表示

v2-7c6ffe6473e4eb750493099ae8807a69_b.jpg

IPv6地址的长度为128位,其中每四位以一个十六进制数表示,一共32个十六进制值。值得一提得是IPv6地址对其中字母不区分大小写。

二进制到十六进制

怎样将八位得二进制转换成十六进制呢?

首先,我们将二进制数分为两个四位的,然后分别计算两个四位的值,最后对照上面的表即可得出。

举个例子,二进制数为11000101,先分为两个四位的二进制数,即1100和0101。然后将他们转换成十进制数,为12和5. 根据上表,对应得出十六进制数为C5,通常写作0xC5。

(根据表中,我们无需转换成十进制数即可对应,但为了不记忆这个表,就先把它转化成十进制)

十进制到十六进制?只要将十进制先转换为8位二进制即可根据上述方法计算得出。

从十六进制到十进制

首先,将十六进制分开并转换成两组四位二进制。然后,将它们拼接。最后,将这个二进制转化成十进制即可。

举个例子,十六进制数为9F, 根据表中对应,我们可知,其对应1001与1111。拼接后为10011111,通过计算,可得十进制数为159。

我们已经学会了二进制十进制与十六进制之间的相互转换,是不是非常简单!

如果学会了,请给我点一个赞

感谢阅读,如果有什么疑问欢迎评论,一起探讨!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值