1.char虽然是字符类型,但是字符类型储存的时候是以ASCII码值储存的,ASCII值却是整数!并且char类型有无符号不确定,看编译器的决定。
2.原反补码的关系。
正数:原反补码都一样,即该数的32位二进制数。
负数:原码为32位二级制数。
反码为 原码除符号位外按位取反。
补码为 反码加一。
如 -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
3.%u是打印无符号数,意思是你要我打印的一定是无符号数,不是无符号数,我也认为是无符号数。
%d是打印有符号数,意思是你要我打印的一定是有符号数,不是有符号数,我也认为是有符号数。
问下面打印结果为什么?
因为c为-1,-1的补码为1111 1111 。
打印为%d,原来要整形提升-1的补码变为1111 1111 1111 1111 1111 1111 1111 1111
但它为无符号数所以整形提升变为0000 0000 0000 0000 0000 0000 0000 1111 1111=255。
4.大小端字节序储存。
大端字节序储存:把一个数据低位字节处的数据存放在高地址处,把高位字节处的数据存放在低地址处。
小端字节序储存:把一个数据低位字节处的数据存放在低地址处,把高位字节处的数据存放在高地址处。
比如说一个数的地址是0x11223344(大端字节序储存)
则0x44332211为小端字节序储存。