二进制转换为十进制和十六进制
作者:互联网
二进制只使用数字 0 和 1 ,其中每个数字对应于一位( 二进 制位)。 通常,我们将每 4位或 8 位作为一组,分别称它们为半字节(旧bble) 和字节。 我们感兴趣的是二进制值对应的十进制值一一十进制以 10 为基数,我们从幼儿园起就开始使用 它了。二进制位接从右向左的顺序排列,每向左移动一位,位值就翻一倍。
这意味着如果某一位的取值为 1 ,则计算半字节或字节对应的十进制值时,应将其位值与其他所 有取值为 1 的位值相加。如果为 0,则不考虑。
下面更详细地阐述这一点。 如果半字节的每一位都为 1 ,则将 8、 4、 2 和 1 相加,结果为 15一一 半字节的最大取值。 假设半字节的取值是 1010,即位值为 8 和 2对应的位为 1 ,则对应的十进制值为 10。 如果半字节的取值为 0110,则对应的十进制值为 6,因为位值 4 和 2对应的位为 1。
然而,字节的最大取值比 15 要大得多,因为如果字节中每位都为 1 ,则其取值如下(别忘了 , 字 节包含 8 位):
11111111
此时若要计算字节对应的十进制值,可将所有取值为 1 的位的位值相加,如下所示:
128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255
这是字节的最大可能取值。
二进制数还可对应众多其他的十进制值,下面来看一些例子。假设二进制数取值如下:
10010110
哪些位的取值为 1 呢?答案是位值为 128、 16、 4 和 2 的位,因此只需将这些位值相加: 128+ 16+4+ 2= 150。再举个例子,假设二进制数取值如下:
01101100
哪些位的取值为 1 呢?答案是位值为 64、 32、 8 和 4 的位,因此只需将这些位值相加: 64+32+8+4= 108。再者,如果二进制数取值如下:
11101000
哪些位的取值为 1 呢?答案是位值为 128、 64、 32和 8 的位,因此只需将这些位值相加: 128+64+32+ 8=232。
十六进制地址与二进制和十进制完全不同,我们通过读取半字节将二进制转换为十六进制。通过 半字节,我们可轻松地将二进制转换成十六进制。首先需要明白的是,十六进制只能使用数字 0-9, 而不能使用 10、 11 、 12 等(因为它们是二位数),因此使用 A、 B、 C、 D、 E和 F分别表示 10、 11、 12、 13 、 14 和 15。
注意:十进制使用 10 个数字,十六进制又使用了字母表的前 6 个字母,即 A-F。
前10个十六进制数字 (0-9 )与相应的十进制值相同,你注意到了吗?因此,这些值转换起来非 常容易。
假设有十六进制数 Ox6A (有时候,思科喜欢在字符前添加 Ox, 让你知道它们是十六进制值。 Ox 并没有其他特殊含义),它对应的二进制值和十进制值是多少呢?你只需记住,每个十六进制字符相 当于半字节,而两个十六进制字符相当于一字节。要计算该十六进制数对应的二进制值,可将这两个 字符分别转换为半字节,然后将它们合并为一个字节:6=0110,而 A= 1010,因此整个字节为 01101010。
要从二进制转换为十六进制,只需将字节划分为半字节,下面具体解释这→点。
假设有二进制数 01010101 。首先将其划分为半字节 0101 和 0101 ,这些半字节的值都是 5,因为 取值为 1 的位对应的位值分别是 1 和 4。因此,其十六进制表示为 Ox55。要将二进制数 01010101 转换 为十进制数,方法为 64 + 16 + 4 + 1 = 85。
下面是另一个二进制数:
11001100
其中 1100=12, 1100= 12,因此它对应的十六进制数为 cc。将其转换为十进制时,答案为 128+64+ 8 +4 =2040
下面再介绍一个例子,假设有如下二进制数:
10110101
它对应的十六进制数为 OxB5 ,因为 1011 对应的十六进制值为 B, 0101 对应的十六进制值为 5。将其 转换为十进制时,结果为 128+32+ 16+4+ 1 = 181。
标签:十六进制,字节,二进制,位值,取值,十进制 来源: https://www.cnblogs.com/foreverhHope/p/12331963.html