整型和浮点型在内存中的存储
文章目录整型一、判断大小端二、有、无符号数浮点型一、存储规则二、代码示例整型一、判断大小端intcheck_sys(){inta1;if(*(char*)a1){return1;//小端}else{return0;//大端}}intcheck_sys(){inta1;return*(char*)a;}intmain(){//printf(小端\n);//errintretcheck_sys();if(ret1)printf(小端\n);elseprintf(大端\n);return0;}0x11223344低地址 高地址1122334444332211大端字节序存储 小端字节序存储 小端存储把一个数据的高位字节序的内容放到高地址二、有、无符号数intmain(){chara-1;//有符号数-128~127signedcharb-1;//无符号数0~255unsignedcharc-1;%d打印的是有符号整形所以char类型要整形提升 char8个bit位提升至32位int有符号补0/1无符号补0printf(a%d,b%d,c%d,a,b,c);//-1,-1,255return0;}intmain(){chara-128;原10000000000000000000000010000000反11111111111111111111111101111111补11111111111111111111111110000000-截断10000000-a 当 printf%d调用时char会整型提升为int通常是32位高位按**符号位**填充printf(%d\n,a);//%d - 打印有符号整形原11111111111111111111111110000000-提升 反10000000000000000000000001111111补10000000000000000000000010000000-128%u 无符号数 → 不看符号位直接把二进制全部当正数**高位补0**这里已经是32位直接用printf(%u\n,a);//%u - 打印无符号整数原码10000000000000000000000010000000反码11111111111111111111111101111111补码111111111111111111111111100000004294967168return0;}浮点型一、存储规则二、代码示例//浮点型在内存中的存储//int main()//{// int n 9;// //[00000000000000000000000000001001]// //0 00000000 00000000000000000001001// //E-126// //M0.00000000000000000001001// // 0.00000000000000000001001* 2^-126// //// float* pFloat (float*)n;// printf(n的值为%d\n, n);//9// printf(*pFloat的值为%f\n, *pFloat);//0.000000//// *pFloat 9.0;//// //1001.0// //1.001*2^3// //S0 E3 M1.001// //[01000001000100000000000000000000]// //// printf(num的值为%d\n, n);//// printf(*pFloat的值为%f\n, *pFloat);//9.0// return 0;//}//浮点数存入内存//int main()//{// float f 5.5f;// 5.5// 101.1// 1.011*2^2// s0 m1.011 e2 - 2127 129// 0 10000001 01100000000000000000000// (-1)^0 * 1.01100000000000000000000 * 2^2// 0x40 b0 00 00//// return 0;//}