一、进制
1.十进制:0~9 例125.9 = 1*10^2+2*10^1+5*10^0+9*10^-1
十进制 -> 二进制:凑 例:75 = 1001011
128 64 32 16 8 4 2 1
0 1 0 0 1 0 1 1
二进制:0~1 例1011.1 = 1*2^3+0*2^2+1*2^1+1*2^0+1*2^-1
八进制:0~7 例 325 = 3*8^2+2*8^1+5*8^0
二进制->八进制:从右往左三个为一组,缺位在前面补0
例:0110 1010 1101 0100 -> 000 110 101 011 010 100
补位0 6 5 3 2 4
十六进制:0~9 A~F/a~f 例 56 = 5*16^1+6*16^0 = 80
二进制 -> 十六进制:从右往左四个为一组,缺位在前面补0
例:1101 0100 1110 1100 0111 10 -> 0011 0101 0011 1011 0001 1110
3 5 3 d/D 1 e/E
2.有符号数用最高为表示符号,0表示正数,1表示负数
例: 0011 -> 3 1001 -> -7
3.负数的二进制对其绝对值取反+1
例: -21 –> 0001 0111(原码) -> 1110 1000(反码) -> 1110 1001(补码)
4.-1的二进制全为1
5.二进制 -> 十进制:先查看符号位,0为正,1为负;再算绝对值,正数直接计算,负数取反加1
二、运算符
1.优先级 优先级的数字越小,优先级越高,先进行优先级高的运算符
2. (1)变量类型
char short int long longlong 一字节 = 八位
1 2 4 4 8 1byte = 8bit
(2)有符号的char取值范围是-128~127
char类型 字符用’i’,字符串用”abc”
(3)float 单精度浮点型 至少要求有6个精确值
例 float a = 11/2 -> 5.0 float b = 11.0/5 = 5.5
double 双精度浮点型
用float类型时,要在数字后加f,例float a = 12.5f否则系统默认为double型
(4)强制类型转换 例 int a = 12.5 –> int a = (int)12.5
自动转换(隐式转换),不用类型进行计算时,将字节小的转换成字节大的。
float a = (float)13/2 = 6.5 先强转 float c = (float)(13/2) = 6.0 先运算再强转
3.sizeof 运算字节 float为4字节 double为8字节
例 printf(“%d\n”,sizeof(float));//4
4.表达式1?表达式2:表达式3 -> 如果表达式1为真,执行表达式2,否则执行表达式3
5.bool类型 真-》1 假-》0
注:连续比较 if(7>5>1) -> 假 理由:7>5 为真是1,1>1为假,所以连续比较永远为0
6.转义字符
\n -> 换行 \’ -> 定义单引号 \” -> 定义双引号 \0 -> 0
7.宏定义 宏就是字符替换 一改全改 宏名定义大写
8.const变量 只读,不能修改 例 const int a = 100; a = 200;(错误)
9.输出函表 %d十进制整数 %c字符 %s字符串 %f 浮点数 %x 十六进制
10.scanf 用于读取数据,后面要使用地址&,一定不能在后面加\n
例 int a; scanf(“%d”,&a);
11.getchar() 读取一个字符 putchar() 输出一个字符