传媒公司营销网站,陕西城乡住房建设部网站,国外手表网站,兰州最新情况一、大端存储与小端存储 大端字节序#xff1a; 数据的低位字节序内容存放在高地址处#xff0c;高位字节序内容存放在低地址处 小端字节序#xff1a; 数据的低位字节序内容存放在低地址处#xff0c;高位字节序内容存放在高地址处 //每个地址单元对应一个字节 二、 整型存…一、大端存储与小端存储 大端字节序 数据的低位字节序内容存放在高地址处高位字节序内容存放在低地址处 小端字节序 数据的低位字节序内容存放在低地址处高位字节序内容存放在高地址处 //每个地址单元对应一个字节 二、 整型存储
char a -128;
//10000000 00000000 00000000 10000000
//11111111 11111111 11111111 01111111
//11111111 11111111 11111111 10000000 - 补码
//10000000 - a
printf(%u\n, a);
分析字符型a以%u形式进行打印发生整型提升变为11111111 11111111 11111111 10000000。
因为是以无符号形式进行打印所以补码与原码相等结果为4294967168。 char a 128;
//00000000 00000000 00000000 10000000
//10000000 - a
//发生整型提升认为a是负数补1
//11111111 11111111 11111111 10000000
printf(%u\n, a);
结果为4294967168。 三、有符号char的取值范围 注意 10000000- -128 char a[1000];
int i;
for(i0; i1000; i)
{a[i] -1 - i;
}
printf(%d\n, strlen(a));分析-1 -2 -3 。。。 -127 -128 127 126 。。。 3 2 1 0 -1 -2 -3 。。。 strlen(a)遇到-\0停止即遇到0停止。结果128127 255 四、浮点型存储 int n 9;float* pf (float*)n;printf(n的值为%d\n, n);printf(* pf的值为%f\n, *pf); //整型方式存储浮点型方式读取*pf 9.0;printf(num的值为%d\n, n); //浮点型方式存储整型方式读取printf(* pf的值为%f\n, *pf); 分析 9《——》00000000 00000000 00000000 00001001 以浮点数形式打印E全为0表示这个数很小所以结果是0.000000 9.0按照浮点数进行存储1001.0——》(-1)^0 * 1.001 * 2^3 s 0; M 001; E 3127 130 0 10000010 00100000000000000000000以10进制进行打印结果为1,091,567,616 int n 9;printf(%f\n, n);float m 9.0;printf(%d\n, m); 4.1 写数据 浮点数5.5 ——10进制 二进制101.1 —— 1.011*2^2 ——(-1)^0 * 1.011*2^2 s 0; M 1.011; E 2 4.1.1 对于32位的浮点数 4.1.2 对于64位的浮点数 1. 1≤M2 也就是说M可以写成 1.xxxxxx 的形式其中xxxxxx表示小数部分。 IEEE 754规定在计算机内部保存M时默认这个数的第一位总是1因此可以被舍去只保存后面的xxxxxx部分。比如保存1.01的时候只保存01等到读取的时候再把第一位的1加上去。这样做的目的是节省1位有效数字。以32位浮点数为例留给M只有23位将第一位的1舍去以后等于可以保存24位有效数字。 2. 科学计数法中的E是可以出现负数的所以IEEE754规定存入内存时E的真实值必须再加上一个中间数对于8位的E这个中间数是127对于11位的E这个中间数是1023。比如2^10的E是10所以保存成32位浮点数时必须保存成10127137即10001001。 浮点数5.5 ——10进制 二进制101.1 —— 1.011*2^2 ——(-1)^0 * 1.011*2^2 s 0; M 1.011; E 2 s 0; M 011; E 2 127 129 0 10000001 01100000000000000000000 注意M 011从左向右写 4.2 读数据 4.2.1 E不全为0或不全为1正常情况 浮点数就采用下面的规则表示即指数E的计算值减去127或1023得到真实值再将 有效数字M前加上第一位的1。 4.2.2 E全为0 表示存储的数据是一个很小的数2^-127-1271270 这时浮点数的指数E等于1-127或者1-1023即为真实值有效数字M不再加上第一位的1而是还原为0.xxxxxx的小数。这样做是为了表示±0以及接近于0的很小的数字。 4.2.3 E全为1 表示存储的数据是一个很大的数2^128128127255, E全为1 这时如果有效数字M全为0表示±无穷大正负取决于符号位s