AP计算机科学A(APcomputer science A)复习备考攻略视频教程
44203 人在学
C语言是作为一门通用计算机编程语言,应用广泛,其设计的目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。众所周知,在编程中除了使用二进制也会经常使用到八进制和十六进制。在深入学习C语言之前课课家笔者先给大家介绍八进制、十六进制的概念以及进制之间的转换步骤。
◎八进制概念
八进制,英文为Octal,缩写OCT或O,一种以8为基数的计算法。在八进制中有0~7共8个数字,其基数为8,逢八进一,借一当八。
八进制Example: 3072 = 3×83 + 0×82 + 7×81 + 2×80 = 1536 + 0 + 56 + 2 = 1594
◎十六进制概念
十六进制,英文为Hexadecimal,它由0-9,A-F组成,字母不区分大小写。与十进制的对应关系是:0-9对应0-9;A-F对应10-15;N进制的数可以用0~(N-1)的数表示,超过9的用字母A-F。具体为用A来表示10,B表示11,C表示12,D表示13,E表示14,F表示15,因此有0~F共16个数字,基数为16,逢16进1,借1当16。
十六进制Example: E3F9 = 14×163 + 3×162 + 15×161 + 9×160 = 57344 + 768 + 240 + 9 = 58361
下表为二进制、八进制、十进制和十六进制之间的对应关系。
十进制 | 二进制 | 八进制 | 十六进制 | 十进制 | 二进制 | 八进制 | 十六进制 |
---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 10 | 1010 | 12 | A |
1 | 1 | 1 | 1 | 11 | 1011 | 13 | B |
2 | 10 | 2 | 2 | 12 | 1100 | 14 | C |
3 | 11 | 3 | 3 | 13 | 1101 | 15 | D |
4 | 100 | 4 | 4 | 14 | 1110 | 16 | E |
5 | 101 | 5 | 5 | 15 | 1111 | 17 | F |
6 | 110 | 6 | 6 | 16 | 10000 | 20 | 10 |
7 | 111 | 7 | 7 | 17 | 10001 | 21 | 11 |
8 | 1000 | 10 | 8 | 18 | 10010 | 22 | 12 |
9 | 1001 | 11 | 9 | 19 | 10011 | 23 | 13 |
PS:在C语言中,八进制通常以“0”开头(注意是数字0不是字母o),举个例子,比如 0307;十六进制通常以“0x”或“0X”开头(不区分大小写),举个例子,比如 0xE27 或 0X89F。
说完概念那么接下来我们就说说具体的实例应用,下面是八进制和十六进制加法运算的两个例子。
①八进制加法:0107 + 0274 = 0403
②十六进制加法:0XA2B + 0X276 = 0XCA1
◎其他进制向十进制的转换
二进制、八进制和十六进制向十进制转换通常是按照“按权相加”的原则来进行转换。
在这里先给大家解释下何谓“按权相加”,这里所指的“权”就是“位权”的意思,比如十进制第1位的位权为100=1,第2位的位权为101=10,第3位的位权为102=100;而二进制第1位的位权为20=1,第2位的位权为21=2,第3位的位权为22=4。设数字所采用的进制为N(基数也是N),那么第i位的位权为N(i-1)。下面笔者以不同进制转换为十进制举例来让大家看看:
◎十进制转换为二进制
十进制和二进制的转换我们可以使用辗除法。所谓辗除法也就是“除模取余”法,具体方法为将一个几进制的数转化成另一个进制时,另一个进制的基数就是模,用将要转化的进制数除以模,取它的余数。接下来笔者以十进制的“19”转换为二进制为例子进行介绍。
◎二进制和八进制的转换
二进制向八进制的转换是每三位二进制数转换为一位八进制数,运算的顺序是从低位向高位依次进行,高位不足三位用零补充。下面笔者以二进制“1011101”为例子,具体如图4所示。
◎二进制和十六进制的转换
二进制向十六进制转换时,四位转换成十六进制的一位,运算的顺序是从低位向高位依次进行,高位不足四位用零补。下面笔者以“1110011”转换成十六进制为例子,具体如图6所示。