Tip:本章主要学习数制的基本知识和基本简单的数据类型,尽量把C语言的数据知识用最简单的数学模型讲解明白。除此之外,本章的知识需要重点学习,数据类型是C语言中重点的知识,虽然本章中的数据类型只有简单的几种,但是学会之后奥妙无穷,为以后学习复杂的数据类型打下坚实的基础。
2.1 常见的几种数制
2.1.1 十进制
十进制数用0、1、2、3…….9 , 这十个数来表示。十进制(计数法)是以10为基础数字系统, 是在世界上应用最广泛的进位制。
即满十进一,满二十进二,以此类推;按权展开,第一位权为100,第二位101……以此类推,第N位10^()N-1,该数的数值等于每位位的数值*该位对应的权值之和(例如123=1*102+2*101+3*100)。世界上绝大多数古文明都是使用的十进制,古中国,古印度,古希腊等。
Tip:十进制只有0、1、2、3……9这十个数,不要记成1到10。
2.1.2 二进制
二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数计算机运算基础采用二进制。
二进制数(binaries)是逢2进位的进位制,0、1是基本算符;如同十进制一样二进制的第一位的权重为20,第二位为21……以此类推,第N位为2N-1,该数的数值等于每位位的数值*该位对应的权值之和(例如1010=1*23+0*22+1*21+0*20 = 10(十进制))。
2.1.3 八进制
八进制(Octal),缩写OCT或O,一种以8为基数的计数法,采用0,1,2,3,4,5,6,7八个数字,逢八进1。一些编程语言中常常以数字0开始表明该数字是八进制(例如023)。八进制的数和二进制数可以按位对应(八进制1位对应二进制3位),因此常应用在计算机语言中。
八进制与十进制和二进制的特点一样,第一位的权重为80,第二位的权重为81……以此类推,第N为的权重为8N-1,该数的数值等于每位位的数值*该位对应的权值之和(例如0752=7*82+5*81+2*80 = 490(十进制))。
2.1.4 十六进制
十六进制(简写为hex或下标16)是一种基数为16的计数系统,是一种逢16进1的进位制。通常用数字0、1、2、3、4、5、6、7、8、9和字母A、B、C、D、E、F(a、b、c、d、e、f)表示,其中:A~F表示10~15,这些称作十六进制数字。
C语言、C++、Shell、Python、Java语言及其他相近的语言使用字首“0x”,例如“0x5A3”。开头的“0”令解析器更易辨认数,而“x”则代表十六进制(就如“O”代表八进制)。在“0x”中的“x”可以大写或小写。
十六进制与前几种进制一样,第一位权重是160,第二位的权重是161……以此类推,第N位的权重是16N-1,该数的数值等于每位位的数值*该位对应的权值之和(例如0xb2=b*161+2*160 = 178(十进制))。