注意享项 数据存储形式 字符型按 ASCI码存储,其余以补码存储 示意图 字符型01100001(字符a) 用一个字节存放该字符的ASC值(ASC值表见P374) 整型0110000111001101(+进制数25037) 用两个字节存放该数值的补码 注:第一位均为符号位
注意事项 • 数据存储形式 字符型按ASCII码存储,其余以补码存储 示意图 字符型 (字符'a') 用一个字节存放该字符的ASCII值(ASCII值表见P374) 整 型 (十进制数25037) 用两个字节存放该数值的补码 注:第一位均为符号位 01100001 01100001 11001101
对于inta=8b=8; 符号位: 0—正数1—负数 符号位 数值位 真值 a=810=10002 b=-810=-10002 原码0000000000100000001000 补码000000000111111190 正数的原码=正数的补码 负数的原码和补码按以下规则相互转换: 符号位不变,数值位各位取反,末位加1。 2.整型变量的分类P42
• 对于 int a=8,b=-8; 0 0000000 00001000 符号位: 0—正数 1—负数 1 0000000 00001000 1 1111111 11110111 正数的原码=正数的补码 负数的原码和补码按以下规则相互转换: 符号位不变,数值位各位取反,末位加1。 0 0000000 00001000 原码 补码 符号位 数值位 真值 a=810=10002 b=- 810=-10002 1 1111111 11111000 2.整型变量的分类 P42
3整型数据的溢出 整型≠整数 int的范围:-32768~+32767 Example: 运行结果: include <stdio. h> include <conio.h> nput:12345 a=12345 Why maino nput:1234567 ? int a j a=-10617 Because:12345的补码是 0011000000111001 1234567的补码是100101101011010000111 截去多余部份(超过2个字节的左边部分)后 其原码为 1010100101111001(-10617) 参见教材P44整型数据的溢出
3.整型数据的溢出 • 整型≠整数 int 的范围: - 32768~+32767 Example: #include <stdio.h> #include <conio.h> main() { int a ; printf(“Input :”); scanf(“%d”,&a); printf(“a=%d\n”,a); } 运行结果: Input:12345 a=12345 Input:1234567 a= -10617 Why ?! Because: 12345的补码是 0011000000111001 1234567的补码是 100101101011010000111 截去多余部份(超过2个字节的左边部分)后 其原码为 1010100101111001(-10617) 参见教材P44“整型数据的溢出
34实型数据 341实型常量的表示方法P45 1.实数又称浮点数有两种表示形式 十进制小数形式它由数字和小数点组成12345 200.0(必有小数点) 指数形式12603(126E3)123e-4(123E4) 注意:字母eE之前必须有数字,且e后面的必须为整数 找错:e3,2103.5 2一个实数可以有多种指数的表示形式例如 123e0,123e1,123e20.12303 把其中123e2称为“规范化的指数形式”,即在字母e/E之前的 数部分中小数点左边应有一位(且只能有一位非零数字 实型常量本身无单或双精度
3.4 实型数据 •3.4.1实型常量的表示方法 P45 1. 实数又称浮点数,有两种表示形式 十进制小数形式 它由数字和小数点组成 123.45 2.0 0.0 ( 必有小数点) 指数形式 1.26e3 (1.26E3) 123e-4(123E-4) 注意:字母e/E之前必须有数字,且e/E后面的必须为整数 找错: e3 , 2.1e3.5 2.一个实数可以有多种指数的表示形式.例如 123e0,12.3e1,1.23e2,0.123e3 把其中1.23e2称为“规范化的指数形式”,即在字母e/E之前的 小数部分中,小数点左边应有一位(且只能有一位)非零数字. 实型常量本身无单或双精度
342实型变量P46 1实型数据在内存中的存放形式 2实型变量的分类 单精度(floa)型67位有效数字 双精度( double)型15-16位有效数字 长双精度 long double)型
3.4.2 实型变量P46 1.实型数据在内存中的存放形式 2.实型变量的分类 • 单精度(float)型 6~7位有效数字 • 双精度(double)型 15~16位有效数字 • 长双精度(long double)型