C语言二进制、八进制、十六进制详解

上传人:豆浆 文档编号:30198977 上传时间:2018-01-28 格式:DOC 页数:4 大小:32KB
返回 下载 相关 举报
C语言二进制、八进制、十六进制详解_第1页
第1页 / 共4页
C语言二进制、八进制、十六进制详解_第2页
第2页 / 共4页
C语言二进制、八进制、十六进制详解_第3页
第3页 / 共4页
C语言二进制、八进制、十六进制详解_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《C语言二进制、八进制、十六进制详解》由会员分享,可在线阅读,更多相关《C语言二进制、八进制、十六进制详解(4页珍藏版)》请在金锄头文库上搜索。

1、C 语言二进制、八进制、十六进制详解什么是二制制?在数学计算中,二进制计数系统的公分母是最小的,它以 2 为基数。你还记得在小学或中学时所学的不同的计数系统吗?笔者在上小学时,曾在一堂数学课中学过以 6 为基数的计数系统;你先数 1,2,3,4,5,然后是 10,11,12,13,14,15,然后是 20,等等,实际上,应该先数 0,1,2,3,4,5,然后是 10,1l ,12,13,14,15,等等。从 O 开始数,能比较清楚地看出每 6 个数字组成一组因此 6 就是基数。注意,你应该从 O 开始一起数到比基数小 1 的数(因为基数是 6,所以你应该从 O 数到 5)。当你数到 5 后,接

2、着应该开始数两位数。如果你思考一下,你就会发现这与以 10 为基数(十进制) 的计数系统是类似的在你数到比基数小 1 的数(9)后,就转到两位数,并继续往下数。计算机中的计数系统以 2 为基数即二进制。由于以 2 为基数,所以你先数 O,1,然后是 10,11,然后是 100,101,110,111,然后是1000,1001,1010,1011,1100,1101,1110,1111,等等。与以 6 为基数时不同,在以2 为基数时,在数到两位数之前,只需从 O 数到 1。那么,为什么在计算机中要以 2 为基数呢?其原因在于计算机中使用了晶体管。晶体管使现代计算机的出现成为可能。晶体管就象电灯开

3、关,电灯开关有“开”和“关”两种状态,晶体管也是如此。你可以认为“关”表示 0, “开”表示 1,这样,你就可以用一个晶体管(如果你愿意,也可以用一个电灯开关) 来进行从。到 1 的计数了。仅仅使用两个数字 (O 到1)还不能做任何复杂的计算,但是我们还可以继续下去。假设有一个电灯开关控制面板,上面有 4 个大电灯开关,尽管每个开关只有两种状态,但是这些开关组合起来就会有 16或 2。(4 个开关,每个 2 种状态 )种不同的状态。这样,你就可以用 4 个开关来进行从。到15 的计数了,见表 2022。表 2022 进制计数-开关 十进制值 幂-O O1 1 2010 2 2111 3100

4、4 22101 5110 6111 71000 8 231001 91010 10 1011 111100 121101 131110 141111 15-上表说明了很重要的三点:通过把开关并排放在一起,你就可以用它们来计数了在本例中最多可以数到 15(总共16 次计数);你可以把每个开关看作是一个二进制位,就象十进制系统中的十进制位一样;如果每个开关都代表一个二进制位,那么它们刚好也都代表一个 2 的幂(20,21,22,23,等等)。此外,请注意,在表中出现 2 的幂的地方,计数结果就要增加一个二进制位。这与十进制系统是相同的,每增加一个十进制位时,这个新的十进制位也正是一个 10 的幂(

5、1=100,10=101,100=102 ,等等) 。明白了这一点后,你就可以很容易地把二进制数转换为十进制数了,例如,二进制数 10111 就是(124)+(O23)+(122)+(121)+(1 20),它等于十进制的(16+0+4+2+1)或 23。10 1110 1011,一个大得多的二进制数,就是(129)+(O28)+(127)+(126)+(125)+(024)+(123)+(O22)+(121)+(120),它等于十进制的(512+0+128+64+32+0+8+0+2+1)或 747。那么所有这些和我们有什么关系呢?在计算机领域中,存在着位(bit),半字节(nibble)和

6、字节(byte)。一个半字节是 4 位,一个字节是 8 位。什么是一个位呢 ?它就是一个晶体管。因此,一个字节就是 8 个相邻的晶体管,就象表 201 中的 4 个开关一样。记住,如果你有4 个组合在一起的开关(或晶体管 ),你就可以数 24 或 16,你可以把这看作是由开关组成的一个半字节。如果一个半字节是 4 个晶体管组合在一起,那么一个字节就是 8 个晶体管组合在一起。你可以用 8 个晶体管数到 2。或 256,从另一个角度看,这意味着一个字节(含8 个晶体管)可以表示 256 个不同的数字 (从 0 到 255)。再深入一点,Intel 386,486 和Pentium 处理器被叫做

7、32 位处理器,这意味着这些 Intel 芯片所进行的每一次运算都是 32位宽或 32 个晶体管宽的。32 个晶体管,或 32 位,等价于 232 或 4,294,967,296,即它们能表示超过 40 亿个不同的数字。当然,上述介绍还不能解释计算机是如何利用这些数字产生那种神奇的计算能力的,但它至少解释了计算机为什么要使用以及是如何使用二进制计数系统的。什么是八进制?八进制是以 8 为基数的一种计数系统。在八进制系统中,你是这样计数的:O,1,2,3,4,5,6,7, 10,ll ,12,13,等等。下面比较了八进制(第二行)和十进制(第一行) 中的计数过程:O,l,2,3,4,5,6,7,

8、8,9,1011,12,13,14,15,160,1,23,4,5,6,7,10,11,12,13,14,15,16,17,20注意,在八进制中,在数到 7 后,就要增加一个八进制位,第二个八进制位显然就是 8?(等于十进制的 8)。如果你数到第三个八进制位 (八进制的 100),那将是 8?或十进制的 64,因此,八进制的 100 等于十进制的 64。 现在,八进制已经不象以前那样常用了,这主要是因为现在的计算机使用的是 8,16,32或 64 位处理器,最适合它们的计数系统是二进制或十六进制(见 2024 中有关十六进制计数系统的介绍)C 语言支持八进制字符集,这种字符要用反斜杠字符来标识

9、。例如,在 C 程序中,下面的语句并不少见:if(x=007)break;这里的007 恰好就是 ASCII 值为 7 的字符;该语句用来检查终端鸣笛字符。另一个常见的八进制数是033,即 Escape 字符( 在程序中它通常表示为 033)。然而,八进制数现在已经很少见了它们被十六进制数代替了。什么是十六进制?十六进制(hexadecimal,缩写为 hex)是以 16 为基数的计数系统,它是计算机中最常用的计数系统。十六进制中的计数过程为:O,1,2,3,4,5,6,7, 8,9,A ,B,C ,D,E,F,10,11,12,13,14,15,16,17,18,19,1A,1B,1C, 1

10、D,1E,1F,等等。十六进制中的字母是几个单位数标识符,表示十进制的 10 到 15。要记住在不同基数下的计数规则,即从 O 数到比基数小 1 的数字,在十六进制中这个数就是十进制的 15。因为西式数字中没有表示大于 9 的单位数,所以就用 A,B,c,D ,E 和 F 来表示十进制的 10 到 15。在十六进制中,数到 F 之后,就要转到两位数上,也就是 1OH 或 Ox1O。下面对十六进制(第二行 )和十进制(第一行)的计数过程作一下比较:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,1,2,3,4,5,6,7,8,9,A , B, C, D, E, F,

11、 10,注意,十进制的 10 等于十六进制的 A。与前面讨论过的计数系统一样,每增加一个十六进制位,实际上就增加了一个 16 的幂,即 160(1),161(16),162(256),163(4096) ,等等。因此,十六进制数 3F 可以展开为(3 161)+(F160),等于十进制的(48+15) 或 63;十六进制数 13F 可以展开为(1162)+(3161)+(F160) ,等于十进制的(256+48+15)或 319。在 c 程序中,这两个数用 0x3F 或 Oxl3F 这样的形式来表示,其中的“0x”前缀用来告诉编译程序(和程序员) 该数字应被当作十六进制数来处理。如果不加“0x

12、”前缀,你就无法判断一个数究竟是十六进制数还是十进制数(或者是八进制数) 。对表 2022 稍作改进,加入十六进制的计数过程,就得到了表 2024:二进制 十进制值 二进制幂 十六进制 十六进制幂0000 O O0001 1 20 1 1600010 2 21 20011 3 30100 4 22 40101 5 50110 6 6 0111 7 71000 8 23 81001 9 91010 10 A1011 11 B1100 12 C1101 13 D1110 14 E1111 15 F10000 16 24 10 161笔者在上表的最后又加了一行,使计数达到十进制的 16。通过比较二进制、十进制和十六进制你就会发现:“十”在二进制中是“1010” ,在十进制中是“10” ,在十六进制中是“A”;。 。十六”在二进制中是 “1 0000或“10000” ,在十进制中是“16” ,在十六进制中是“1O” , ,(见上表的最后一行)。这意味着什么呢?因为今天的 16,32 和 64 位处理器的位宽恰好都是 16 的倍数,所以在这些类型的计算机中用十六进制作为计数系统是非常合适的。十六进制位和二进位之间有一种“倍数”关系。在上表的最后一行中,二进制值被分为两部分(1 0000) 。4 个二进制位(或者 4 位) 可以计数到 15(包括 O 在内共 16 个

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号