十六进制表示法

2020-02-21 17:58:23 浏览数 (2)

一个字节由8位组成。在二进制表示法中,他的值域是00000000₂~11111111₂。如果看成十进制整数,他的值域就是0₁₀~255₁₀。两种符号表示法对于描述位模式来说都不是非常方便。二进制表示法太冗长,而十进制表示法与位模式的相互转化很麻烦。替代的方法是以16为基数,或者叫做十六进制(hexadecimal)数,来表示位模式。十六进制(简写为”hex”)使用数字’0’~’9’以及字符以及字符’A’~’F’来表示16个可能的值。如下所示展示了16个十六进制数字对应的十进制值和二进制值。用十六进制书写,一个字节的值域为00₁₆~FF₁₆。

在C语言中,以0x或Ox开头的数字常量被认为是十六进制的值。字符’A’~’F’既可以是大写,也可以是小写。例如,我们可以将数字FA1D37B16写作 OxFA1D37B,或者Oxfald37b,甚至是大小写混合,比如,0xFalD37b。 编写机器级程序的一个常见任务就是在位模式的十进制、二进制和十六进制表示之间人工转换。 二进制和十六进制之间的转换比较简单直接,因为可以一次执行一个十六进制数字的转换。 数字的转换可以参考如图, 一个简单的窍门是,记住十六进制 数字A,C和F相应的十进制值。而对于把十六进制值B、D和E转换成十进制值,则可以通过计算它们与前三个值的相对关系来完成。 比如,假设给你一个数字0x173A4C。可以通过展开每个十六进制数字,将它转换为二进制格株式,如下所示: 十六进制 1 7 3 A 4 C 二进制 0001 0111 0011 1010 0100 1100 这样就得到了二进制表示 000101110011101001001100。反过来,如果给定一个二进制数字1111001010110110110011,可以通过首先把它分为每4位一组来转换为十六进制。不过要注意,如果位总数不是4的倍数,最左边的一组可以少于4位,前面用0补足。 然后将每个4位组转换为相应的十六进制数字: 二进制 11 1100 1010 1101 1011 0011 十六进制 3 C A D B 3

0 人点赞