计算机中存储的数据主要分为两类:数值型数据和非数值型数据
数值型数据:3.1415926 1314 1212 1111 520 0b0101 0456 0xAFD
非数值型数据:
字符:'A' 'B' 'A' '\n'
字符串:"hello world"
不管是数值型数据还是非数值型数据再内存中存储的都是对应的二进制数。
数据在内存中采用补码的方式进行存储。
无符号数的源码,反码,补码一致。
举例:unsigned char a = 0x57; 数的源码,反码,补码分别为多少?
源码:0b0101 0111
反码:0b0101 0111
补码:0b0101 0111 ---> 0x57数据在内存中存储的就是0b0101 0111
有符号数的正数的源码,反码,补码一致。
举例:char a = 0x57; 数的源码,反码,补码分别为多少?
源码:0b0101 0111
反码:0b0101 0111
补码:0b0101 0111 ---> 0x57数据在内存中存储的就是0b0101 0111
有符号数的负数的源码,反码,补码不一致。
举例:char a = -0x57; 数的源码,反码,补码分别为多少?
源码:负数绝对值转换为二进制,符号位为1
0b1101 0111
反码:符号位不变,其他位按位取反(0变1,1变0)
0b1010 1000
补码:在反码的基础之上加1
0b1010 1001 ---> -0x57数据在内存中存储的就是0b1010 1001