赞
踩
(American Standard Code for Information Interchange): 美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准ISO/IEC 646。
常见ASCII码的大小规则:0~9<A~Z<a~z。
1)数字比字母要小。如 “7”<“F”。
2)数字0比数字9要小,并按0到9顺序递增。如 “3”<“8‘’。
3)字母A比字母Z要小,并按A到Z顺序递增。如“A”<“Z” 。
4)同个字母的大写字母比小写字母要小32。如“A”<“a” 。
1、在计算机内部,字符类型使用一个字节(8位)存储。
2、C 语言将其当作整数处理,所以字符类型就是宽度为一个字节的整数。
3、每个字符对应一个整数(由 ASCII 码确定),比如A对应整数
65
。5、既然是以整数形式储存,那么就存在有符号型(signed)和无符号型(unsigned)两种
4、char 是否有符号,默认取决于编译器 有符号取值范围:(-128——127)无符号取值范围:(0 -——255)
当二进制最高位为0时无符号的char与有符号的char相同
当二进制最高位为1时,内存中为补码
- int main()
- {
- char b = 'A';
- printf("%d\n", b); // 打印出Ascll码值65
- printf("%c\n", b); // 打印字符为 A
-
-
- char a = -1;
- // 原码 10000000000000000000000000000001
- // 反码 11111111111111111111111111111110
- // 补码 11111111111111111111111111111111
- // 由于char类型 为1字节 8bite位 需要截断
- // 11111111
- // 所以-1在内存中储存为11111111
- // 打印时需整型提升 且为有符号整型
- // 负整数补1
- // 补码 11111111111111111111111111111111
- // 原码 10000000000000000000000000000001
- // -1
- printf("%d\n", a); // 打印出有符号值:-1
-
- // 打印时为无符号
- // 原反补相同 11111111111111111111111111111111
- printf("%u\n", a); // 打印出无符号值: 4294967295
-
- return 0;
- }
当超出char类型范围时,char会按照图中循环方式进行储存值,本质是由整型提升导致的
- int main()
- {
- int a = -20;
- //原 10000000000000000000000000010100
- //反 11111111111111111111111111101011
- //补 11111111111111111111111111101100
- printf("%d\n", a); // -20
- printf("%u\n", a); // 4294967276 打印无符号时,补码为原码
-
-
- unsigned int b = 10;
- //原 00000000000000000000000000001010
-
- // 11111111111111111111111111101100 -20
- // +00000000000000000000000000001010 10
- //补11111111111111111111111111110110 -10
- // 转化为原码减一变反码
- //反11111111111111111111111111110101
- //原10000000000000000000000000001010 -10
-
- printf("%d\n", a + b);// -10
-
- // 11111111111111111111111111110110 打印无符号 补码不用变原码
- printf("%u\n", a + b);// 4294967286
- return 0;
- }
(-1) ^S * M * 2 ^E
(-1) ^S 表示符号位 ,当s=0, V为正数;当s=1, V为负数
M表示有效数字,M大于等于1,小于2
2^E表示指数位
- int main()
- {
- float a = 5.5f;
- // 5.5 -> 十进制
- // 101.1 -> 二进制
- // 1.011 * 2^2 -> 2的2次方表示小数点往前移两位
- // (-1)^0 * 1.011 * 2^2 -> 二进制浮点数的表现形式
- // (-1)^S * M * 2 ^E
- // S = 0 M = 1.011 E = 2 + 127 = 129
- // S E M
- // 0 10000001 01100000000000000000000
- // 0100 0000 1011 0000 0000 0000 0000 0000
- // 8421
- // 40 a0 00 00 -> 8进制
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。