![轻松学C语言](https://wfqqreader-1252317822.image.myqcloud.com/cover/139/656139/b_656139.jpg)
2.1 数
数是最简单的数据形式,也是计算机能够直接表示的。同时,计算机只识别和处理数字信息。各种形式的信息在存储到计算机中时都转化为各种数字。所以本节专讲数的表示,下面将讲解四种常用的进制:十进制、二进制、八进制、十六进制。
2.1.1 十进制
十进制数是组成以10为基础的数字系统。由0、1、2、3、4、5、6、7、8、9十个基本数字组成。其中每一个数都用括号括起来,括号后面的10为基数,它的表示如图2.1所示。1998的表示形式如图2.2所示。
![](https://epubservercos.yuewen.com/36CD4E/3590313404985601/epubprivate/OEBPS/Images/figure_0026_0001.jpg?sign=1739334135-xjArgOTsHk5ZfOZhQthcdVxwuujqIJXw-0-7db54c6b41121a799957a1590f74bb65)
图2.1 十进制数
![](https://epubservercos.yuewen.com/36CD4E/3590313404985601/epubprivate/OEBPS/Images/figure_0026_0002.jpg?sign=1739334135-iemX9xXKTfVxDwnMYQnV00uLYg8DzI65-0-08bcbd59f445436ac68c96d5073b0b93)
图2.2 1998的十进制表示
在运算时,十进制数需要遵循进位规则和借位规则。下面详细讲解这两种规则。
1.进位规则
进位是在加法中,每位等于基数时向前一位进一。
十进制的进位规则为“逢十进一”,即两个数相加,低位满十就向高位进一,此位相加后的结果减去10为此位的结果,低位向高位进上去的1,在进上去的高位进行运算时用到,如图2.3所示。
![](https://epubservercos.yuewen.com/36CD4E/3590313404985601/epubprivate/OEBPS/Images/figure_0027_0001.jpg?sign=1739334135-BZ76uLPbzVtlzGQ2JQHVXdqHiFLEpN1I-0-3ec1a5fcaee7d67f3dc4f8a22312c909)
图2.3 进位规则“逢十进一”
2.借位规则
借位是减法运算中,被减数的某一位数不够减时向前一位借一,化成本位的数量,然后再减。
十进制借位规则为“借一当十”,即当两个数相减时,被减数的低位小于减数的低位时,向高位借一。看成10加在此位做被减数,再去减减数,低位向高位借走的1,在借走的高位做运算时用到。如图2.4所示。
![](https://epubservercos.yuewen.com/36CD4E/3590313404985601/epubprivate/OEBPS/Images/figure_0027_0002.jpg?sign=1739334135-OkmuKLhF1BQPfM4koanR8z5wGngCBkly-0-72d90501259faf6b7b0ad27be6368a9b)
图2.4 借位规则“借一当十”
2.1.2 二进制
二进制是计算机的内存储器上唯一能识别的编码,因为机器的电路状态只有两种,开和关。一方面使用二进制易于物理实现,另一方面,资料存储、传送和处理简单可靠;最后运算规则简单,使计算器具有逻辑性。
1.二进制的构成
二进制数据是用0和1两个数码来表示的数,它的基数为2。其中每一个数都用括号括起来,其中基数表示可用进制中数码的个数。进位规则是“逢二进一”。借位规则是“借一当二”。二进制的具体表示形式如表2.1所示。
表2.1 二进制的表现形式
![](https://epubservercos.yuewen.com/36CD4E/3590313404985601/epubprivate/OEBPS/Images/figure_0027_0003.jpg?sign=1739334135-ZbQFyJ2S9TUOqp1VYzTM7ZHPl3FshT03-0-6e46d886eabfcbef60ba76335ada8480)
二进制数的表示形式如图2.5所示。
![](https://epubservercos.yuewen.com/36CD4E/3590313404985601/epubprivate/OEBPS/Images/figure_0028_0001.jpg?sign=1739334135-tkmuCHibekivktHrZxoMwZ3cuBlcuP69-0-642dfa8f68c28971566728ddfb5d4ce5)
图2.5 二进制数
如0001的表示形式如图2.6所示。
![](https://epubservercos.yuewen.com/36CD4E/3590313404985601/epubprivate/OEBPS/Images/figure_0028_0002.jpg?sign=1739334135-m9NJ3pjZkwunmmzswxiBgUzhH9f3RR2r-0-578a5dbcd057ea442b5322e2d2e1c13a)
图2.6 0001的二进制
2.进位规则
进位规则为“逢二进一”,即两个数相加,低位满二就向高位进一,此位相加后的结果减去2为此位的结果,低位向高位进上去的1,在进上去的高位进行运算时用到,如图2.7所示。
![](https://epubservercos.yuewen.com/36CD4E/3590313404985601/epubprivate/OEBPS/Images/figure_0028_0003.jpg?sign=1739334135-EFyrjNvGR6cnFLIRaQO0VGNVuidg8rl5-0-634b07579f8a64710be58b16f048b662)
图2.7 进位规则“逢二进一”
3.借位规则
借位规则为“借一当二”,即当两个数相减时,被减数的低位小于减数的低位时,向高位借一,看成2加在此位做被减数,再去减减数,低位向高位借走的1,在借走的高位做运算时用到。如图2.8所示。
![](https://epubservercos.yuewen.com/36CD4E/3590313404985601/epubprivate/OEBPS/Images/figure_0028_0004.jpg?sign=1739334135-JMPtA8H3CPrXsaLcfUEk0c6FfuE8ciGN-0-e4be16d5c90ad6aa3e279bac5c994430)
图2.8 借位规则“借一当二”
4.十进制转化为二进制——辗除法
表2.1只给出了基本的十进制和二进制的转换关系。要想获得更多的转换关系,可以使用辗除法。辗除法也就是“除模取余”法。除模取余就是将一个几进制的数转化成另一个进制时,另一个进制就是模,用将要转化的进制数除以模,取它的余数。
下面以十进制的“19”转换为二进制为例,如图2.9所示,十进制“19”转换成二进制的形式为“10011”。
![](https://epubservercos.yuewen.com/36CD4E/3590313404985601/epubprivate/OEBPS/Images/figure_0028_0005.jpg?sign=1739334135-V67yOD1XdsC5fILvAeqQlh7R2NyAgxtm-0-6d9001faeeb8e5cc88b65031622cba9d)
图2.9 十进制向二进制的转换
2.1.3 八进制
由于数据用二进制表示长度会比较长,书写以及记忆不方便,所以人们逐步使用八进制表示数据。下面主要讲解八进制的构成和表示及其与二进制之间的转换。
1.八进制的构成和表示
八进制的数一定要以数字0开头,是用0、1、2、3、4、5、6、7八个数表示的。它的基数为8,进位规则是“逢八进一”。八进制的表示如表2.2所示。
表2.2 八进制的表示形式
![](https://epubservercos.yuewen.com/36CD4E/3590313404985601/epubprivate/OEBPS/Images/figure_0029_0001.jpg?sign=1739334135-EYkuWUVUODqygdpZ5r1pc6JqbWpmElFz-0-9948bed6dcef77b16ad1ce3a9084ca50)
八进制数的表示方式如图2.10所示。
![](https://epubservercos.yuewen.com/36CD4E/3590313404985601/epubprivate/OEBPS/Images/figure_0029_0002.jpg?sign=1739334135-WDyDCFl4w4ykb1aLzeJG8lvIscHTR52c-0-f8ada2023a59c301d28c5f34dafb84e6)
图2.10 八进制数
7的表示形式如图2.11所示。
![](https://epubservercos.yuewen.com/36CD4E/3590313404985601/epubprivate/OEBPS/Images/figure_0029_0003.jpg?sign=1739334135-ELkGV0mZCr4ZTPJZvUISXxeRTV11xGBV-0-7e6f4d69e51f56c52c77b3e0ca8eaa0e)
图2.11 007的八进制表示
2.进位规则
进位规则为“逢八进一”,即两个数相加,低位满八就向高位进一,此位相加后的结果减去8为此位的结果,低位向高位进上去的1,在进上去的高位进行运算时用到,如图2.12所示。
![](https://epubservercos.yuewen.com/36CD4E/3590313404985601/epubprivate/OEBPS/Images/figure_0029_0004.jpg?sign=1739334135-iKUnPoGVIqzFzYtfMwu6pmZehxTkkHhA-0-c0838768c741f7b5c03b6b49cb7d78e3)
图2.12 进位规则“逢八进一”
3.二进制和八进制的转化
二进制向八进制的转换是每三位二进制数转换为一位八进制数,运算的顺序是从低位向高位依次进行,商位不足三位用零补充。以二进制“1111”为例,如图2.13所示。
![](https://epubservercos.yuewen.com/36CD4E/3590313404985601/epubprivate/OEBPS/Images/figure_0030_0001.jpg?sign=1739334135-JqjbIdXQIvJPAVTUj7PiqAJbevxQufoH-0-65f2a22f7dab545d360f037ca3f23464)
图2.13 二进制向八进制转换
八进制向二进制转换的思路是八进制的一位转换为二进制的三位,运算的顺序是从低位向高位依次进行。同样以八进制“17”为例,具体转换如图2.14所示。
![](https://epubservercos.yuewen.com/36CD4E/3590313404985601/epubprivate/OEBPS/Images/figure_0030_0002.jpg?sign=1739334135-KpHj7d6FANFYuE7anpP7VjldObkCz7Nc-0-c77f541ec364873deccc94c33ec54de0)
图2.14 八进制转换为二进制
2.1.4 十六进制
虽然有了八进制,但是遇到更大的数字,八进制还是不方便,十六进制诞生了。下面讲解十六进制的构成和表示以及其与二进制之间的转换。
1.十六进制的构成和表示
十六进制数一定要以数字0和字母x开头(即0x),是用0~9以及A、B、C、D、E、F十六个数表示的。它的基数为16,进位规则是“逢十六进一”。十六进制的表示如表2.3所示。
表2.3 十六进制的表示形式
![](https://epubservercos.yuewen.com/36CD4E/3590313404985601/epubprivate/OEBPS/Images/figure_0030_0003.jpg?sign=1739334135-3fnMi4ubRIaAOT0Aj4nSU8YV7EPs2iqs-0-2f2029aa7a7b0b1a71a1126e59b54cb2)
十六进制数的表示方式如图2.15所示。
![](https://epubservercos.yuewen.com/36CD4E/3590313404985601/epubprivate/OEBPS/Images/figure_0031_0002.jpg?sign=1739334135-B2U8ZMjtjrVCiekW8Ahqnf9nmorEqwVT-0-d1a50eb2c394516c3756c28a5a1f1858)
图2.15 十六进制数
0x7的表示形式如图2.16所示。
![](https://epubservercos.yuewen.com/36CD4E/3590313404985601/epubprivate/OEBPS/Images/figure_0031_0003.jpg?sign=1739334135-7s1MWfheYoAi1Mec07HmtGzzyQz7UReU-0-4dbee7e78484a123f3db6dc7137eaf54)
图2.16 0x7
2.进位规则
进位规则为“逢十六进一”,即两个数相加,低位满十六就向高位进一,此位相加后的结果减去16为此位的结果,低位向高位进上去的1,在进上去的高位进行运算时用到,如图2.17所示。
![](https://epubservercos.yuewen.com/36CD4E/3590313404985601/epubprivate/OEBPS/Images/figure_0031_0004.jpg?sign=1739334135-0vCL8YgphimrbB4TrlRhW3O9ScSjJLJw-0-f3ff2b34c115ddffa0d11ca4ff17fe69)
图2.17 进位规则“逢十六进一”
3.二进制和十六进制的转化
二进制向十六进制转换时,四位转换成十六进制的一位,运算的顺序是从低位向高位依次进行,商位不足四位用零补。以“1110011”转换成十六进制为例,具体实现如图2.18所示。
![](https://epubservercos.yuewen.com/36CD4E/3590313404985601/epubprivate/OEBPS/Images/figure_0031_0005.jpg?sign=1739334135-wZMPIR3LfWsMgso6KUAbwI2VlZljn6Y6-0-c7f7d72154cb9df762e9006faff7878c)
图2.18 二进制向十六进制转换
注意:从低位向高位进行,最后不够四位,则在缺少的高位补0。
十六进制向二进制转换,就是把十六进制的一位转换成二进制的四位,注意运算的顺序是从低位向高位依次进行。同样以十六进制“73”为例,具体转换如图2.19所示。
![](https://epubservercos.yuewen.com/36CD4E/3590313404985601/epubprivate/OEBPS/Images/figure_0032_0001.jpg?sign=1739334135-oathBz3dcrmGdhEHOZZ85jqq00V1kbgI-0-83f0291139b1ae5bdea0fc8c0639bf55)
图2.19 十六进制向二进制转换