1.整数在内存中的存储
整数在内存是以补码的形式存在的;
整型家族包括char,int ,long long,short类型;
因为char类型是以ASCII值形式存在,所以也是整形家族;
这四种都包括signed,unsigned两种,即有符号和无符号;
当我们只写char,int ,long long,short时候,会被默认是有符号的;
分析过程:
100行:-1的二进制原码;
101,102行:-1的反码和补码;
103行:32比特位,4个字节,char只有1个字节,4个字节放到1个字节里面不够放,所以会截断,即只保留最后的8个比特位;
106行:根据自身类型进行整形提升得到补码;char a和signed char b都是有符号的,所以提升的时候补上最高位,也就是1;
107,108行:进行转化,得到原码,因为打印的是原码;
112行:根据自身类型进行整形提升得到补码;无符号的c高位补上0得到补码;高位是0--->正数-->原码反码补码相同,二进制转换十进制得到255;
2.大小端字节序的判断
其实超过⼀个字节的数据在内存中存储的时候,就有存储顺序的问题,按照不同的存储顺序,我们
分 为⼤端字节序存储和⼩端字节序存储
大端:低位字节在高地址处,高位字节在低地址处;
小端:低位字节在低地址处,高位字节在高地址处;
95行是:10的二进制表示;
96行是:转换成16进制,依据4个2进制位转换成1个16进制位;
由图知:低位0a位于低地址614(614,615,616,617是a的地址,相互比较,614是低地址),由此可见这是小端存储。