c语言基础笔记DAY2
1.在计算中,负数不直接使用源码的原因?
举例
原码:
+0 : 0000 0000
-0 : 1000 0000
+1 : 0000 0001
-1 : 1000 0001
+1 + (-1) = 0000 0001 + 1000 0001 = 1000 0010 = -2 ?
- 在c语言中没有减法 , 直接使用原码计算 , 会导致带符号数计算结果错误
2.原码
数的最原始的二进制码
-0: 1000 0000
+0: 0000 0000
-1: 1000 0001
1: 0000 0001
1 + -1?0000 0001
1000 0001
1000 0010 = -2
注意: 负数如果在计算机中用原码存,会导致两个问题 .
- 负数运算结果不正确
- 0的状态还有两种
3.反码
正数的反码不变 ,负数的反码(符号位不变,其他位取反)
-0:1111 1111
+0: 0000 0000
-1:1111 1110
1: 0000 0001
1 + -1 = 1111 1111 = -0
如果计算机用反码去存,负数运算结果正确,但是 0的状态还是有两种
4.补码
正数的补码不变,负数的补码等于反码加1
-0:0000 0000
+0: 0000 0000
-1:1111 1111
1: 0000 0001
1+ -1= 0
如果计算机用补码去存,负数运算结果是正确的,0的状态只有一种
5.补码求原码
-23:
原码: 10010111
反码: 11101000
补码: 11101001
反码: 10010110(补码求原码: 符号位不变,其他位取反)
原码: 10010111(反码求原码: 反码加1)
6.练习例子
int num = 0x80000001; //编译器储存补码
1000 0000 0000 0000 0000 0000 0000 0001 补码
1111 1111 1111 1111 1111 1111 1111 1110 反码
1111 1111 1111 1111 1111 1111 1111 1111 原码
-2147483647
Tips
1. 在赋值或打印数值时,如果赋值或打印八进制或十六进制的值,则直接以补码形式储存或输出;
2. 如果赋值或打印十进制数值,则是默认会转成补码后,在储存;
3. 如果十进制数值溢出,则默认输入的数值为补码.
7.八进制与十六进制
八进制可以看成是3位 3位 1组的二进制数 : 01 111 010 八进制: 172
十六进制可以看成4位 4位 1组的二进制数: 1010 1111 十六进制:0xaf
8.各类型变量取值范围
数据类型 | 占用空间 | 取值范围 |
---|---|---|
short | 2字节 | -32768 到 32767 (-215 ~ 215-1) |
int | 4字节 | -2147483648 到 2147483647 (-231 ~ 231-1) |
long | 4字节 | -2147483648 到 2147483647 (-231 ~ 231-1) |
unsigned short | 2字节 | 0 到 65535 (0 ~ 216-1) |
unsigned int | 4字节 | 0 到 4294967295 (0 ~ 232-1) |
unsigned long | 4字节 | 0 到 4294967295 (0 ~ 232-1) |
9.字符
字符ASCII码举例
-
字符’0’ ascii值是48
-
字符’1’ ascii值是49
-
‘A’ ascii值是65’B’ ascii值是66
-
‘a’ ascii值是97’b’ ascii值是98
ASCII字符对照表
ASCII值 | 控制字符 | ASCII值 | 字符 | ASCII值 | 字符 | ASCII值 | 字符 |
---|---|---|---|---|---|---|---|
0 | NUT | 32 | (space) | 64 | @ | 96 | 、 |
1 | SOH | 33 | ! | 65 | A | 97 | a |
2 | STX | 34 | " | 66 | B | 98 | b |
3 | ETX | 35 | # | 67 | C | 99 | c |
4 | EOT | 36 | $ | 68 | D | 100 | d |
5 | ENQ | 37 | % | 69 | E | 101 | e |
6 | ACK | 38 | & | 70 | F | 102 | f |
7 | BEL | 39 | , | 71 | G | 103 | g |
8 | BS | 40 | ( | 72 | H | 104 | h |
9 | HT | 41 | ) | 73 | I | 105 | i |
10 | LF | 42 | * | 74 | J | 106 | j |
11 | VT | 43 | + | 75 | K | 107 | k |
12 | FF | 44 | , | 76 | L | 108 | l |
13 | CR | 45 | - | 77 | M | 109 | m |
14 | SO | 46 | . | 78 | N | 110 | n |
15 | SI | 47 | / | 79 | O | 111 | o |
16 | DLE | 48 | 0 | 80 | P | 112 | p |
17 | DCI | 49 | 1 | 81 | Q | 113 | q |
18 | DC2 | 50 | 2 | 82 | R | 114 | r |
19 | DC3 | 51 | 3 | 83 | S | 115 | s |
20 | DC4 | 52 | 4 | 84 | T | 116 | t |
21 | NAK | 53 | 5 | 85 | U | 117 | u |
22 | SYN | 54 | 6 | 86 | V | 118 | v |
23 | TB | 55 | 7 | 87 | W | 119 | w |
24 | CAN | 56 | 8 | 88 | X | 120 | x |
25 | EM | 57 | 9 | 89 | Y | 121 | y |
26 | SUB | 58 | : | 90 | Z | 122 | z |
27 | ESC | 59 | ; | 91 | [ | 123 | { |
28 | FS | 60 | < | 92 | / | 124 | | |
29 | GS | 61 | = | 93 | ] | 125 | } |
30 | RS | 62 | > | 94 | ^ | 126 | ` |
31 | US | 63 | ? | 95 | _ | 127 | DEL |