111 000 101 010 101 ->070525 0111 0001 0101 0101 ->0x7155数据类型
_Bool a; 真(非0):a = 1;a = 45; 假(0):a= 0; 整型: 1)char printf占位符: 无符号范围 0------2^8-1 有符号-2^7 ------+2^7-1 2)short printf占位符: 无符号范围 0------2^16-1 有符号-2^15 ------+2^15-1 3)int printf占位符: 无符号范围 0------2^32-1 有符号-2^31 ------+2^31-1 4)long printf占位符: 无符号范围 0------2^64-1 有符号-2^63 ------+2^63-1 5)long long printf占位符: 无符号范围 0------2^64-1 有符号-2^63 ------+2^63-1 无符号: unsigned: sizeof(); 运算符,返回类型占用的字节 浮点型: float printf占位符: 有符号范围:-3.4*10^-38--------3.4*10^308 double printf占位符: 有符号范围:-1.7*10^-308--------1.7*10^308整形在内存怎么存
浮点型在内存怎么存
十进制的数值3356可以有下列三种不同的表示形式: 十进制数 3356 八进制数 06434 十六进制数 0xd1c
截断是什么? 高精度强制转换为高精度时,只能取到低精度的位数,剩余部分就会丢失 隐式转换? 1)有符号-->无符号;2)低精度-->高精度 强制转换? (数据类型)变量名
变量的命名: 1 数字 字符 _ 2 第一个字符不能数字 3 不能用关键字 int char ... c语言关键字
常量
整型:二进制、八进制、十进制、十六进制
浮点:1)小数型常量;2)指数型常量
字符串:一串字符构成字符串,用英文的双引号("")括起来
#define:标识常量,定义宏,常量名称要用大写字母,且语句结尾不能加分号(;)
变量
变量初始化:为变量指定一个初始的值
类型转换
double p = 5/10的输出结果为:0 5.0/10的输出结果为:0.5 (fioat)(5/10)的输出结果为:0.00 (float)5/10的输出结果为:0.5 int a = 96; float b = (float)a
问题: int a = 855; char b = a;原码反码补码
正数 负数运算符
- 算术运算符
1.+:1)单目正;2)双目加 2.-:1)单目负:2)双目减 3.*:乘 4./:除和整除 【注】当除数和被除数为整型时,结果只保留整数部分而自动舍弃小数部分,0不能作为除数;除数和被除数只要有一个浮点数,进行浮点数相除 5.%:取模(取余) 【注】两个操作数只能是整数,不能是浮点数
- 逻辑运算符
真 || 真 = 真 假 || 真 = 真 假||假 =假 真&&真 = 真 假&&真 = 假 !真 = 假
- 位运算符
~111111 :000000
& : 101010&100000 = 100000
| :1011 | 0100 =1111
^ :1010 ^ 1010 = 0000
10101 ^ 00000 = 10101 不变
101011 ^ 111111 = 010100 取反
>> : 11101010 >> 1 -> 11110101
0011 0101 >> 1 00011010
<< :
- 复合运算符
+= -= *= /= %= &= ^= |=
- 逗号运算符
1.同时进行赋值运算,用逗号隔开。如:int x = 1,y = 2; 2.在括号内,用逗号隔开,从左往右依次执行运算,最后括号的值为最后一个变量的赋值作业
1. 把06764转为二进制
--> 110 111 110 100
2. 0x9A564转为二进制
--> 1001 1010 0101 0110 0100
3. 写出-9542补码,895的补码
1)-9542--> 1101 1010 1011 1010
2)895--> 0011 0111 1111
4. 补充完上面数据类型笔记,每个类型多少字节,数值范围
见上
5. 用sizeof输出各个类型的所占字节
已练习
6. 整型浮点型在内存大致怎么存?
1)整型以补码的形式存储,正数的补码与原码相同,负数的补码是反码+1,符号位不动;
2)浮点型以1个bit存储符号位,并分为指数位和有效数字位,其中单精度浮点型有4字节,双精度浮点型有8字节
(1)单精度浮点型的指数位有8bit,有效数字位有23bit;
(2)双精度浮点型的指数位有11bit,有效数字位有52bit。
7. 弄清变量和常量
见上
8. 弄清类型转化的问题
见上
9. 补充运算符的笔记
见上
10. printf("%f",562354);会是什么?
1)简单理解整型不可以用浮点转化%f表达;
2)复杂理解,常量传进printf时,因为其为整型,不会转化成double型数据,而%f寻的是64位内存,就会将562354转化成0000000000562354当成浮点型输出。而因为阶数为0,所以在转化二进制时,为1.#*2^-1023,数值非常小,所以只能显示0.000000



