输入计算机的数字、字符、符号等信息必须转换成0、1组合的数据形式才能被计算机接收、存储并进行运算。能够进行算术运算并且得到明确的数值的数据概念的信息叫数值数据,其余的信息成为非数值数据。
权:每位数的数值。
基数:指该进位制中允许选用的数码的个数。
数值数据的计数方式是进位制,方式按进位的方式计数的数制都叫进位制。用有限的数码表示,例如二进制、八进制、十进制、十六进制。
基数为2的进制叫二进制,只有0和1两种数码,逢二进一,英文缩写BIN(前缀是0b)。
数据的最小单位:bit位
数据的基本单位:byte字节
1 Byte = 8 bit
1 KB = 1024 Byte
1 MB = 1024 KB
1 GB = 1024 MB
1 TB = 1024 GB
1 PB = 1024 TB
0b 1010 = 1*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = 8 + 2 = 10
0b 1111 = 1*2^3 + 1*2^2 + 1*2^1 + 1*2^0 = 8 + 4 + 2 + 1 = 15
除以2取余数,逆序排列,高位补零
例如:100
100/2 = 50 …… 0
50/2 = 25 …… 0
25/2 = 12 …… 1
12/2 = 6 …… 0
6/2 = 3 …… 0
3/2 = 1 …… 1
1/2 = 0 …… 1
得出二进制数据:0b 0110 0100
例如:
74=64+8+2 = 0b 0100 1010
基数为8的进制称为八进制,0、1、2、3、4、5、6、7作为码数,逢八进一,英文缩写OCT。(前缀是:0)
例如:
0177 = 1*8^2 + 7*8^1 + 7*8^0 = 127
可以通过短除法,像十进制转换成二进制一样;或者先转换成二进制,再转换成八进制(三位二进制数据转换成一位八进制数据)。
每三位二进制就转换成一位八进制,2^3 = 8
例如:
二进制:0111? ? ? ? 八进制:7
二进制:1000? ? ? ? 八进制:10
每一位八进制代表三位二进制,从低位(也就是右边)开始转换,如果不满三位则在左边补零。
例如:
八进制:026? ? ? ? ? ? 二进制:0b 0001 0110
八进制:04561? ? ? ? 二进制:0b 1001 0111 0001
基数为10的进制叫十进制,0、1、2、3、4、5、6、7、8、9作为码数,逢十进一,英文缩写为:DEC(没有前缀)。
例如:
123 = 1*10^2 + 2*10^1 + 3*10^0
基数为16的进制叫十六进制,0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F作为码数,逢十六进一,英文缩写为:HEX(前缀为:0x)。
例如:
0x4A = 4*16^1?+ 10*16^0 = 64 + 10 = 74
每四位二进制能够转换成一位十六进制,2^4 = 16
例如:
二进制:1111? ? ? ? ? ? 十六进制:F
二进制:1 0000? ? ? ? 十六进制:10
一位十六机制可以转换成四位二进制,从低位也就是右边开始转换,如果不满四位则左边补零。
例如:
十六进制:A5E1? ? ? ? 二进制:0b 1010 0101 1110 0001
计算机中数据的概念是广义的,计算机内除了前面提到的数值数据之外,还有文字、符号、图像、语言和逻辑信息等,它们被称为非数值数据,但是它们也是由0、1形式存在的。
字符数据主要是指数字、字母、通用符号和控制符号等等,都被计算机内部转换成能够识别的二进制编码形式,国际上普遍采用的一种编码是美国国家信息交换标准代码,简称ASCII,英文全称为American Standard Code Information Interchange,可以用man ascii查阅到该表。
"0"? ? ? ? 字符串0
'0'? ? ? ? ?字符0,对应ASCII码为48
0? ? ? ? ? 数字0
'\0'? ? ? ? 空字符
'\0'? ? ? ? 0? ? ? ? ? ?空字符,字符串结束的标志
'\n'? ? ? ?10? ? ? ? ? 换行
'? '? ? ? ? 32? ? ? ? ? 空格
'0'? ? ? ? 48? ? ? ? ? 字符0
'9'? ? ? ? 57? ? ? ? ? 字符9
'A'? ? ? ? 65? ? ? ? ? 大写字母A
'Z'? ? ? ? 90? ? ? ? ? 大写字母Z
'a'? ? ? ? 97? ? ? ? ? 小写字母a
'z'? ? ? ? 122? ? ? ? 小写字母z
'0' - 48 = 数字0
'9' - 48 = 数字9
大写字母 + 32 = 小写字母
小写字母 - 32 = 大写字母
词法符号就是由若干字符组成的有意义的最小语法单位。按照词法符号在程序中的功能,可以分为:关键字、标识符、运算符、分隔符和标点符号。
关键字是由系统预定义好的词法符号,有特定的含义,不允许用户重新定义。基本的关键字有存储类型、数据类型、控制语句还有其他的一些关键字。
auto(自动型)、static(静态型)、extern(外部引用)、register(寄存器类型)
char(字符型)、short(短整型)、int(整型)、long(长整型)、float(单精度浮点型)、double(双精度浮点型)、signed(有符号型)、unsigned(无符号型)、struct(结构体)、union(共用体)、enum(枚举)、void(空类型)
if、else、while、do、for、switch、case、default、break、continue、goto、return
sizeof(计算数据所占空间大小)、const(声明只读变量)、typedef(重命名)、volatile(防止编译器优化)
标识符是由程序员按照命名规则自定义的词法符号,用于宏定义名,变量名,函数名和自定义类型名。
C语言标识符命名规则如下:
注意:大小写敏感,命名有一定的含义,便于记忆,能够增加可读性。
运算符是表示运算的词法符号,可以按功能分为:算术运算符、逻辑运算符、关系运算符、赋值运算符、位运算符和其他运算符。
分隔符是用来分隔其他词法符号的,主要包括:空格、制表符、换行符和注释。通过对分隔符的恰当使用,能够让代码的外观格式更加清晰易读,代码结构清晰能够帮助分析程序中的语法错误。
C语言中的标点符号有逗号、分号、冒号、花括号、圆括号。标点符号的作用与分隔符相似,但是用法非常严格,有明确的语法规定。有一些标点符号在程序的表达式中充当运算符使用。