常见的进制
1、十进制 逢十进一 0~9 基数:10 位权:10^n-1 123=1*10^2+2*10^1+3=100+20+3+123 2、二进制 0b/0B 逢二进一 0,1 基数:2 位权:2^n-1 0b1001+0b0011=1100 1111=1*2^3+1*2^2+2+1=15 3、八进制 0 逢八进一 0~7 基数:8 位权:8^n-1 0456+0123=601 456=4*8^2+5*8^1+6=302 4、十六进制 0x 逢十六进一 0~9 a ,b ,c,d,e,f(a~f) 基数:16 位权:16^n-1 0x4a5=4*16^2+10*16+5=1189 |
进制之间的转换
1、十进制转二进制: 短除法:除二至商为0取余数的倒置(除基取余法) 985 == 1111011001 凑数法:985 == 512 + 256 + 128 + 64 + 16 + 8 + 1 == 2^9*1 + 2^8*1 + 2^7*1 + 2^6*1 + 2^5*0 + 2^4 *1 + 2^3*1 + 2^2*0 + 2^1*0 + 2^0*1 二进制转十进制: 11001 ==2^4 *1 + 2^3*1 + 2^2*0 + 2^1*0 + 2^0*1 == 25 2、八进制转二进制: 01234 == 001 010 011 100 二进制转八进制: 1 111 011 001 == 01731 一位八进制数转换为三位二进制数 八进制 二进制 0 000 1 001 2 010 3 011 4 100 5 101 6 110 7 111 3、十六进制转二进制: 0x2a == 0010 1010 二进制转十六进制: 11 1101 1001 == 0x3d9 一位十六进制数转换为四位二进制数 十六进制 二进制 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 a 1010 b 1011 c 1100 d 1101 e 1110 f 1111 十六进制和八进制之间转换先转换为二进制再转换为十六进制或八进制 |
计算机中数据的存储方式
数据都是以补码形式存放 1、正数:原码、补码、反码相同 2、负数:反码:符号位不变其它位按位取反 0-1 1-0 补码:补码=反码+1 3、已知补码求原码:法(1)先—1,除符号位取反就是 法(2)对补码取补码也可以(补码取反+1) 原码:10011100 反码:11100011 补码:11100100 |
非数值数据
非数值数据包括字符、符号、转义符等。 ASCII表提供非数值数据的整数表达(man帮助手册查询ASCII表) ‘\0’------0 '\n'-----10 SPACE----32 'A'------65 'a'------97 |
词法符号
1、关键字--32个 [1] 数据类型: char(字符) short int long float(浮点型) double signed unsigned --8个 [2] 存储类型:auto register(寄存器) extern static const volatile --6个 [3] 语句:if else switch case while do for continue break goto return default --12个 [4] 构造:struct union enum --3个 [5] 空类型:void [6] 取别名:typedef [7] sizeof运算符:sizeof(计算数据类型大小) 2、标识符 标识符是程序员按命名规则自定义的符号 命名规则:(1)只能由字母、数字和下划线组成 (2)不能以数字开头 (3)不能和关键字重名 大小写敏感 3、运算符 [1]算数运算符: + - * / % [2]逻辑运算符:&& || ! [3]关系运算符:< > == != >= <= [4]位运算符:& | ~ ^ << >> [5]赋值运算符:= += -= *= /= [6]递增递减运算符: ++ -- [7]地址运算法:* & [8]逗号运算符:, [9]sizeof运算符:sizeof(计算数据类型大小) [10]三目运算符: ?: 4、分隔符 用来分割其他的词法符号 空格符、制表符、换行符、注释 //表示注释一行 /* jdjdhdxcdn */ #if 0 #endif 5、标点符号 , ; :() {} [] |
数据类型
[1] char 字符型 'a' 'b' 占一字节空间 1bytes=8bit 取值范围: signed char :-2^7~2^7-1 unsigned char : 0~2^8-1 [2]short 短整型 占2个字节空间 取值范围: signed short :-2^15~2^15-1 unsigned short : 0~2^16-1 [3]int 整型 占4个字节空间 [4]long 长整型 32位:4bytes 64位:8bytes [5]浮点型 float:单精度浮点型,精确到小数点后6~7位 (4bytes) double:双精度浮点型,精确到小数点后15~16位 (8bytes) [6]bool类型 true false [7]viod空类型 |
常量
整型常量:1,2,3.....100 字符型常量:'a' 'A' 'B' 字符串常量:"hello" "12345" "a" "hello" ==> 'h'+'e'+'l'+'l'+'o'+'\0' 浮点型常量:3.14 2.338e-8//2.338*10^-8 标识常量:宏定义 #define MAX 100 |
变量:用来保存不同的常量
[1]变量的定义 <存储类型> <数据类型> 变量名 ; 存储类型: register auto extern static auto :自动存储类型,系统自动为变量开辟空间,在内存中 register:将变量存储到寄存器中,但一般申请不成功,此时变量的存储类型为auto extern: 外部声明 static:静态修饰变量 数据类型: char int long float double .... 变量名:标识符 标识符命名规则 1、只能由字母、数字和下划线组成 2、不能以数字开头 3、不能和关键字重名 [2]变量的初始化 int a = 10; //初始化a的值为10 int a; a=10; [3]局部变量和全局变量 .定义在模块内的变量为局部变量 .定义在模块外的变量为全局变量 .当模块结束后,该模块在内存中的空间会被系统回收,局部变量的空间也会被回收 |