月光博客 网站模板,成都营销型网站建设推广,招网络推广招聘,煜阳做网站大家好#xff0c;我是残念#xff0c;希望在你看完之后#xff0c;能对你有所帮助#xff0c;有什么不足请指正#xff01;共同学习交流 本文由#xff1a;残念ing原创CSDN首发#xff0c;如需要转载请通知 个人主页#xff1a;残念ing-CSDN博客#xff0c;欢迎各位→…大家好我是残念希望在你看完之后能对你有所帮助有什么不足请指正共同学习交流 本文由残念ing原创CSDN首发如需要转载请通知 个人主页残念ing-CSDN博客欢迎各位→点赞 收藏⭐️ 留言 系列专栏残念ing 的专题实践练习系列专栏——CSDN博客 ————————————————————CSDN——————————————————— 目录
练习1根据大小端的概念设计一个小程序来判断当前机器的字节序——百度笔试题
练习2
练习3.1
练习3.2
练习4
练习5.1
练习5.2
练习6
关于浮点数在内存中的存储练习7 练习1根据大小端的概念设计一个小程序来判断当前机器的字节序——百度笔试题
#include stdio.h
int check_sys()
{int i 1;return (*(char *)i);
}
int main()
{int ret check_sys();if(ret 1){printf(⼩端\n);}else{printf(⼤端\n);}return 0;
}
练习2
int main()
{char a -1;//100000000000000000000000001//111111111111111111111111110//111111111111111111111111111//存储在a中要发生截断//char-a-11111111//111111111111111111111111111--整型提升//100000000000000000000000000//100000000000000000000000001signed char b -1;//11111111-bunsigned char c -1;//11111111-c//000000000000000000011111111-无符合整数提升就高位补0printf(a%d,b%d,c%d, a, b, c);//-1-1,255//%d-十进制的形式打印有符号的整数return 0;
}
signed char 的取值范围-128——127
unsigned char 的取值范围0——255 练习3.1
//signed char 的取值范围-128—127
//unsigned char 的取值范围0—255
#include stdio.h
int main()
{char a -128;//10000000-a//打印时整型提升//111111111111111110000000printf(%u\n, a);//%u 是十进制的形式打印无符合的整数return 0;
}
练习3.2
#include stdio.h
int main()
{char a 128;//00000000000000000000000010000000//100000000-aprintf(%d\n, a);return 0;
}
练习4
#include stdio.h
#includestring.h
int main()
{char a[1000];//-128~127//-1 -2 -3 ....-128 127126...3 2 1 0 -1 -2....int i;for (i 0; i 1000; i){a[i] -1 - i;}printf(%d, strlen(a));//求字符串长度找的是\0\0 的ASCII码的值是0//128127 225return 0;
}
练习5.1
#include stdio.h
unsigned char i 0;
int main()
{for (i 0; i 255; i)//死循环{printf(hello world\n);}return 0;
}
练习5.2
#include stdio.h
int main()
{unsigned int i;//死循环for (i 9; i 0; i--){printf(%u\n, i);}return 0;
}
练习6
#include stdio.h
int main()
{int a[4] { 1, 2, 3, 4 };int* ptr1 (int*)(a 1);//跳过整个数组int* ptr2 (int*)((int)a 1);//跳过一个字节printf(%x,%x, ptr1[-1], *ptr2);//ptr1[-1]--*ptr1—1return 0;
}
关于浮点数在内存中的存储练习7
//整数的存储方式和浮点数的存储方式不同
#include stdio.h
int main()
{int n 9;float* pFloat (float*)n;//强制类型转换printf(n的值为%d\n, n);printf(*pFloat的值为%f\n, *pFloat);*pFloat 9.0;printf(num的值为%d\n, n);printf(*pFloat的值为%f\n, *pFloat);return 0;
}
解析
为什么 9 还原成浮点数就成了 0.000000
n9 的二进制序列为000000000000000000000000000001001
将其进行拆分后得s0E00000000M000000000000000000001001
由于E全为0所以浮点数V就写为
V(-1)^0 × 0.00000000000000000001001×2^(-126)1.001×2^(-146)
可以看出V是⼀个很⼩的接近于0的正数所以⽤⼗进制⼩数表⽰就是0.000000。
浮点数9.0为什么整数打印是 1091567616
⾸先浮点数9.0 等于⼆进制的1001.0即换算成科学计数法是1.001×2^3
所以9.0 (−1)^ 0 (1.001) *2^3
可以知道S0E3127130M00100000000000000000000
所以写成⼆进制形式应该是SEM即0 10000010 001 0000 0000 0000 0000 0000
这个32位的⼆进制数被当做整数来解析的时候就是整数在内存中的补码原码正是 1091567616 。