自己可以做一个网站吗,Wordpress福利资源模板,重庆介绍ppt制作,福州网站建设网站设计网站推广1.整数在内存中的存储
整数在内存是以补码的形式存在的#xff1b;
整型家族包括char,int ,long long,short类型#xff1b;
因为char类型是以ASCII值形式存在#xff0c;所以也是整形家族#xff1b;
这四种都包括signed,unsigned两种#xff0c;即有符号和无符号
整型家族包括char,int ,long long,short类型
因为char类型是以ASCII值形式存在所以也是整形家族
这四种都包括signed,unsigned两种即有符号和无符号
当我们只写char,int ,long long,short时候会被默认是有符号的 分析过程 100行-1的二进制原码
101102行-1的反码和补码
103行32比特位4个字节char只有1个字节4个字节放到1个字节里面不够放所以会截断即只保留最后的8个比特位
106行根据自身类型进行整形提升得到补码char a和signed char b都是有符号的所以提升的时候补上最高位也就是1
107108行进行转化得到原码因为打印的是原码
112行根据自身类型进行整形提升得到补码无符号的c高位补上0得到补码高位是0---正数--原码反码补码相同二进制转换十进制得到255 2.大小端字节序的判断
其实超过⼀个字节的数据在内存中存储的时候就有存储顺序的问题按照不同的存储顺序我们
分 为⼤端字节序存储和⼩端字节序存储
大端低位字节在高地址处高位字节在低地址处
小端低位字节在低地址处高位字节在高地址处 95行是10的二进制表示
96行是转换成16进制依据4个2进制位转换成1个16进制位
由图知低位0a位于低地址614614615616617是a的地址相互比较614是低地址由此可见这是小端存储。
3.浮点数在内存里面的存储
任意⼀个⼆进制浮点数V可以表⽰成下⾯的形式 V (−1)^S* M *2^E;
float类型32比特位SEM对应1832
double类型64比特位SEM对应11152
例如9.0可以写作1001.0---1.001*2^3;
(1)浮点数存的过程
M在1~2之间所以存的时候只存小数部分就是小数点以后的
E是一个无符号整数所以可能是负数例如1.5就是1*2^-1因为2的-1次方就是0.5
存的时候float型的E要加上127double型的要加上1023
2浮点数取的过程
0.5 的⼆进制形式为0.1则为1.0*2^(-1)其 E为-1127(中间值)126存表⽰为01111110⽽尾数1.0去掉整数部分为0补⻬0到23位 00000000000000000000000存的时候加上127取的时候减去127
当E全是0浮点数的指数E等于-126-1022有效数字M不再加上第⼀位的1⽽是还 原为0.xxxxxx的⼩数
当E全是1表示无穷大 以此为例int n以float打印时9是1001.01.001*2^3
0000 0000 0000 0000 0000 0000 0000 1001存
S0E全是0所以E是-126取
就是-1^0*0.000 0000 0000 0000 0000 0000 1001*2^-126,所以打印0.000000 浮点数9.0 等于⼆进制的1001.0
是1.001×2^3 --------所以 9.0 (−1)^0* (1.001) ∗ 2^3;
E3127130;
0 10000010 001 0000 0000 0000 0000 0000
首位0表示是正数原码反码补码相同打印1091567616。