数据在内存中存储的都是补码,数据的补码需要使用源码,反码进行转换。
无符号数的源码,反码,补码都是一样。
比如:unsigned char ch = 0x78;
0x78源码: 0b0111 1000
0x78反码: 0b0111 1000
0x78补码: 0b0111 1000 ----> 在内存中存放的是数据的补码。
有符号数(正数):源码,反码,补码都是一样。
比如:char ch = 0x78;
0x78源码: 0b0111 1000
0x78反码: 0b0111 1000
0x78补码: 0b0111 1000 ----> 在内存中存放的是数据的补码。
有符号数(负数):源码,反码,补码不一样。
比如:char ch = -7;
-7源码:符号位为1,有效位为负数的绝对值.
0b1000 0111
-7返码:符号位不变,有效位按位取反,每个bit位进行取反操作(0变1,1变0)
0b1111 1000
-7补码:在反码的基础知识加1,符号位不变。
0b1111 1001 ----> 在内存中存放的是数据的补码。
练习题:
short类型: short s = -0x567;
源码:1000 0101 0110 0111
反码:1111 1010 1001 1000
补码:1111 1010 1001 1001
int类型: int i = -10;
源码:1000 0000 0000 0000 0000 0000 0000 1010
反码:1111 1111 1111 1111 1111 1111 1111 0101
补码:1111 1111 1111 1111 1111 1111 1111 0110
C语言基础源码,反码,补码
最新推荐文章于 2023-08-06 00:01:23 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)