首先是原码反码补码我认为是在存储过程中最显眼掌握的;
例如补码去反加一也可以得到原码;
然后就是算术转换没记太清楚,想在这里在写写;
就是操作符的各操作数在进行计算时,例如一个int 型的 -128 和 一个 unsigned Int 100 加
操作符 “+”之间计算时 int 就会被转换成 unsigned int 型;
unsigned int
long int
unsigned int
int //向上转换:
然后有回到数据存储,还有一个整形提升也挺重要的;eg:当一个char类型被强制转换成int类型时b变回发生;对于signed(这里就想到VS默认char为signed char 类型)类型的数据,高位补原符号位,对于 unsigned 类型的数据高位直接补0;
还有一个就是浮点数的存储:
直接来个例子:9.5在内存中是怎么存的?
首先换成二进制数:1001.1
换成科学计算形式:1.0011*2^3
然后有745规则的 (-1)^S * 2^E*M 得到S,E,M
S==0; E = 3 ;M = 1.011; E先要加一个中间值127(1023)M去掉前面的1,低位补0
0 1000 0010 011 0000 0000 0000 0000 0000 -- 32位
0100 0001 0011 0000 0000 0000 0000 0000
VS显示的是十六进制(小端):0x 00 00 30 41
然后还有读取时的三种情况