文章目录
一:数据类型
类型的意义:决定了这个数据的使用范围。
1.1整形家族:
1.2构造类型:
1.3指针类型:
1.4空类型:
二:数据的原码反码补码
为什么如此?是因为计算机中只有加法器,比如在做相减的时候,1-1需要变为1+(-1),这也就用到了补码。
这段代码为何如此?按照常理20转化为十六进制是0X00 00 00 14,而在内存中却是倒过来存储。这便涉及到了计算机中的大端字节存储和小端字节存储。
2.1大端字节存储
请一定要注意这里是字节存储。对于16进制的20,我们转换如图所示
通俗来讲,就是从左到右存储16进制的(2个16进制对应8个二进制=1个字节)
2.2小端字节存储
2.3大小端字节存储的意义
2.4判断大端小端
这里用强制类型转换,读取1个字节,如果返回值为1,则为小端,如果返回值为0,则为大端。
三:无符号数和有符号数
1:第一步写出-1的原码反码补码
10000000 00000000 00000000 00000001 原码
111111111 111111111 111111111 111111110 取反(符号位不变)
111111111 111111111 111111111 111111111 补码
因为a是char类型,截断8个bit位
11111111
此时发生整形提升(最高位为符号位,补符号位,到32位)
11111111 11111111 11111111 11111111 补码
显然是-1
2:因为第一个char类型就是signed ,有符号数,所以b打印也是-1 3:打印无符号整形 -1截断8位后是11111111 整形提升的时候默认最高位不是符号位, 所以整形提升变成 00000000 00000000 00000000 11111111 也就是这是个无符号数,原码反码补码一样,所以直接计算得出来是255,因此char类型的-1的无符号整数就是255。
感谢各位的浏览,谢谢!希望能帮助您更好的了解c语言中,数据存储的相关知识点