当前位置: 首页 > news >正文

汽车4s店网站模板精准客户运营推广

汽车4s店网站模板,精准客户运营推广,企业网站搭建项目概述范文,电商公司网站✨个人主页#xff1a; 熬夜学编程的小林 #x1f497;系列专栏#xff1a; 【C语言详解】 【数据结构详解】 目录 1、整数在内存中的存储 2、大小端字节序和字节序 2.1、什么是大小端#xff1f; 2.2、为什么有大小端? 2.3、练习 2.3.1、练习1 2.3.2、练习2 2.… ✨个人主页 熬夜学编程的小林 系列专栏 【C语言详解】 【数据结构详解】 目录 1、整数在内存中的存储 2、大小端字节序和字节序 2.1、什么是大小端 2.2、为什么有大小端? 2.3、练习 2.3.1、练习1 2.3.2、练习2 2.3.3、练习3 2.3.4、练习4 2.3.5、练习5 2.3.6、练习6 总结 1、整数在内存中的存储 在讲解操作符的时候我们就讲过了下面的内容 整数的2进制表示方法有三种即原码、反码和补码。 三种表示方法均有 符号位和数值位 两部分符号位都是用 0表示“正”用1表示“负” 而数值位最高位(第一位)的⼀位是被当做符号位剩余的都是数值位。 正整数的原、反、补码都相同。 负整数的三种表示方法各不相同。 原码直接将数值按照正负数的形式翻译成⼆进制得到的就是原码。 反码将原码的符号位不变其他位依次按位取反就可以得到反码。 补码反码1就得到补码。 对于整形来说数据存放内存中其实存放的是补码。 为什么呢 在计算机系统中数值⼀律用补码来表示和存储。 原因在于使用补码可以将符号位和数值域统⼀处理 同时加法和减法也可以统⼀处理CPU只有加法器此外补码与原码相互转换其运算过程是相同的不需要额外的硬件电路。 2、大小端字节序和字节序 当我们了解了整数在内存中存储后我们调试看⼀个细节 #include stdio.h int main() {int a 0x11223344;return 0; } 调试的时候我们可以看到在a中的 0x11223344 这个数字是按照字节为单位倒着存储的。这是为什么呢 2.1、什么是大小端 其实超过⼀个字节的数据在内存中存储的时候就有存储顺序的问题按照不同的存储顺序我们分为大端字节序存储和小端字节序存储下面是具体的概念 大端存储模式是指数据的低位字节内容保存在内存的高地址处而数据的高位字节内容保存在内存的低地址处。 小端存储模式是指数据的低位字节内容保存在内存的低地址处而数据的高位字节内容保存在内存的高地址处。 上述概念需要记住方便分辨大小端。 2.2、为什么有大小端? 为什么会有大小端模式之分呢 这是因为在计算机系统中我们是以字节为单位的每个地址单元都对应着⼀个字节⼀个字节为8 bit 位但是在C语言中除了8 bit 的 char 之外还有16 bit 的 short 型32 bit 的 long 型要看具体的编译器另外对于位数大于8位的处理器例如16位或者32位的处理器由于寄存器宽度大于⼀个字节那么必然存在着⼀个如何将多个字节安排的问题。因此就导致了大端存储模式和小端存储模式。 例如⼀个 16bit 的 short 型 x 在内存中的地址为 0x0010 x 的值为 0x1122 那么 0x11 为高字节 0x22 为低字节。对于大端模式就将 0x11 放在低地址中即 0x0010 中 0x22 放在高地址中即 0x0011 中。小端模式刚好相反。我们常用的 X86 结构是小端模式而 KEIL C51 则为大端模式。很多的ARMDSP都为小端模式。有些ARM处理器还可以由硬件来选择是大端模式还是小端模式。 2.3、练习 2.3.1、练习1 请简述大端字节序和小端字节序的概念设计⼀个小程序来判断当前机器的字节序。10分-百度笔试题。 思路一 创建一个int类型变量 i 赋值成1如果通过char*解引用也得到1那么就是小端。 //代码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; }思路二 使用联合体方法创建一个char类型和一个int类型的联合体将int类型的数据赋值成1如果char类型的数据也为1则为小端。 //代码2 int check_sys() {union{int i;char c;}un;un.i 1;return un.c; } 2.3.2、练习2 #include stdio.h int main() { char a -1; signed char b-1; unsigned char c-1; printf(a%d,b%d,c%d,a,b,c); return 0; } 在第十六弹的操作符(下)中我们谈到整型提升C语言中整型算术运算总是至少以缺省整型类型的精度来进行的。( 即储存数据类型小于整型储存的32比特位时就使小于32比特位的数据类型整型提升 为了获得这个精度表达式中的字符和短整型操作数在使用之前被转换为普通整型(int)这种转换称为整型提升。 1. 有符号整数提升是按照变量的数据类型的符号位来提升的 2. 无符号整数提升高位补0 我们可以知道我们一般整数进行计算时需要转化为int类型。 10000000 00000000 00000000 00000001    -1的原码 111111111 111111111 111111111 111111110    -1的反码 111111111 111111111 111111111 111111111    -1的补码 但是a的类型为char类型因此只能存储8个bit位即11111111   a在内存中实际存储 b的类型为signed char类型因此只能存储8个bit位即11111111   b在内存中实际存储 c的类型为unsigned char类型因此只能存储8个bit位即11111111   c在内存中实际存储 a按照%d进行打印即10进制无符号整数打印a为char类型根据整型提升规则有符号按照符号位提升,a提升之后为11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111    补码 11111111 11111111 11111111 11111110    反码 1000000 0000000 0000000 00000001   原码    值为-1    因此a打印的值为-1b同理 c按照%d进行打印即10进制无符号整数打印c为unsigned char类型根据整型提升规则无符号在前面补0c提升后为00000000 00000000 00000000 11111111 ----为正数因为正数的原反补码相同因此c的10进制值为255 2.3.3、练习3 #include stdio.h int main() {char a -128;printf(%u\n,a);return 0; } 10000000 00000000 00000000 10000000     -128原码 111111111 111111111 111111111 011111111     -128反码 111111111 111111111 111111111 10000000     -128补码 a为char类型因此a在内存中实际存储为 10000000 a按照%u进行打印即10进制无符号打印a首先进行整型提升无符号按照符号位进行提升即 11111111 11111111 11111111 10000000    提升之后 按照无符号打印即直接打印转化为10进制后结果为4,294,967,168 #include stdio.h int main() {char a 128;printf(%u\n,a);return 0; } 00000000 00000000 00000000 10000000     128原、反、补码  正数都相等 a为char类型在内存中存储为10000000 a按照%u打印先整型提升char类型按照符号位提升即 11111111 11111111 11111111 10000000 10进制无符号打印即为4,294,967,168 2.3.4、练习4 #include stdio.h int main() {char a[1000];int i;for(i0; i1000; i){a[i] -1-i;}printf(%d,strlen(a));return 0; } strlen计算的是\0之前的字符串长度即需知道什么时候为0循环第一次a[i]-1-0-1然后-2一直到-128-128-1为127然后一直减到0中间个数有255个因此长度为255. 2.3.5、练习5 #include stdio.h unsigned char i 0; int main() {for(i 0;i255;i){printf(hello world\n);}return 0; } 根据unsigned char类型大小的取值范围范围为0-255因此 i 一定小于等于255所以此处为死循环一直打印hello world #include stdio.h int main() {unsigned int i;for(i 9; i 0; i--){printf(%u\n,i);}return 0; } 根据unsigned int类型大小的取值范围范围为0-4,294,967,295i 一定大于等于0因此此处也为死循环先打印9 8 7 ....0  然后打印最大值最大值-1.....一直循环。 调试可得下图。 2.3.6、练习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);return 0; } x86环境得到的结果x64可能会出错。 总结 本篇博客就结束啦谢谢大家的观看如果公主少年们有好的建议可以留言喔谢谢大家啦
http://www.hkea.cn/news/14573754/

相关文章:

  • 东莞网站制作公司怎么选择建一个网站的程序
  • 西安seo网站推广优化google网页版登录入口
  • 免费创建虚拟网站百度网站的网址是什么
  • 水果套餐网站wordpress 便签
  • 门头设计网站推荐城乡建设证书查询官网
  • 手机在线做ppt模板下载网站室内装修装饰设计培训班
  • 高校网站建设重要作用wordpress臃肿吗
  • 网站子栏目设计小区媒体网站建设
  • 做筹款的网站需要什么资质什么网站做一手项目好
  • 重庆在线观看长沙网站seo按天计费
  • 网站备案 加急哪里有微信网站开发公司
  • 自己做黑彩网站国内做房车游网站
  • 张扬网站建设网站页面总数
  • 国外网站有哪些推荐的制作企业推广网站
  • 什么是企业云网站建设忠县网站建设
  • 深圳查询建设项目规划的网站做熊猫tv网站的目的
  • 企业网站对网络营销的意义深圳市网站建设做网站
  • php网站建设流程php网站屏蔽词怎么做
  • 网站qq统计网络培训意义
  • 推广网站加盟做一个内容网站多少钱
  • 电商网站链接买卖深圳制作网站公司哪里好
  • 泰安网站建设入门推荐wordpress安装数据库端口
  • 深圳网站建设公司 评论网页制作需要会哪些
  • 东莞 网站制作泉州网站建设网站制作
  • 怎么在悉尼做网站wordpress服务器安装教程
  • 聊城集团网站建设加盟河南网站平台建设公司
  • 网站改版升级总结广州建设技术职业学院
  • 网站上打广告深圳品牌手表有哪些
  • 郑州做网站推广电子商务网站建设的一般流程
  • 余姚物流做网站国内优秀的设计网站推荐