华清远见25072班C语言学习day2
重点内容:
变量的取值范围:
1字节等于8个比特位
1byte数据eg:
无符号数0000 0000 ----- 1111 1111 ===>[0,255]
有符号数 --->[-128,127]
有符号负数:1111 1111----1000 0000(原码) [-128,0]
有符号正数:0000 0000 ---- 0111 1111 ===>[0,127]
1000 0000 ----> 1111 1111 ----> 1 0000 0000 ----> 1000 0000 (高位溢出截取后的结果)
1000 0000这个补码没有数据使用,所以规定该补码的最高位既是数据位也是符号位-128(不能反推反码和原码)
2Byte数据:
1000 0000 0000 0000 ----- 0111 1111 1111 1111 ===>[-2^15,2^15-1]
4Byte数据:
0x10 00 00 00 -----> 0x7F FF FF FF ====>[-2^31,2^31-1]
8Byte数据:
0x10 00 00 00 00 00 00 00 ---> 0x7F FF FF FF FF FF FF FF ====> [-2^63,2^63-1]
数据存取问题
计算机中实际存储的是数据的补码
数据存入时看数据的正负(看数据)
数据取出时看是否由符号(看符号)
char取值范围(-128,127)
signed char c2 = 129; //正数原反补相同:1000 0001 补位: 0xFF FF FF 81
反:0xFF FF FF 80 原:0x80 00 00 7F ----> -127 printf("c2=%d\n",c2); //-127
取看符号位: 补:1000 0001 反:1000 0000 原:1111 1111 ---->-127
printf("c2=%u\n",c2); //1000 0001 -->129
unsigned char c3 = 129; //补:1000 0001 //高位补位:0x00 00 00 81
printf("c3=%d\n",c3); //129 printf("c3=%u\n",c3); //129
标准输入输出函数:
1.printf输出函数
printf("格式符和转义字符",输出表象);
一个格式符对应一个输出数据,有几个输出数据就有几个格式符
格式符:
- %d 十进制整形数据的输出
- %ld 十进制长整型输出
- %f 单精度浮点型输出(默认输出小数点后6位)
- %lf 双精度浮点型输出
- %u 无符号整形数据输出
- %nd 以n个字符的宽度输出(右对齐输出)
- %-nd 以n个字符的宽度左对齐输出
- %.mf 输出包含小数点后m位
- %#x/X 十六进制输出(x/X决定了十六进制数中字母是大写还是小写)
- #表示输出前导符 %#o 八进制输出
- %p 输出内存地址
- %s 输出字符串
- %c 输出字符
- %% 输出一个%
转义字符:
- \n 换行
- \t 制表符(一个tab的大小)
- \b 退格
- \r 回车回到行首位置
- \\ 打印一个\
作业:
1.思维导图: