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

做 爱 网站视频邯郸捕风科技有限公司

做 爱 网站视频,邯郸捕风科技有限公司,工程公司起名,推荐网站建设服务数据在内存中的存储#xff08;deeper#xff09; 一.数据类型的详细介绍二.整形在内存中的存储三.浮点型在内存中的存储 一.数据类型的详细介绍 类型的意义#xff1a; 使用这个类型开辟内存空间的大小#xff08;大小决定了使用范围#xff09;如何看待内存空间的视角… 数据在内存中的存储deeper 一.数据类型的详细介绍二.整形在内存中的存储三.浮点型在内存中的存储 一.数据类型的详细介绍 类型的意义 使用这个类型开辟内存空间的大小大小决定了使用范围如何看待内存空间的视角 1整形 char unsigned char signed char short unsigned short [int] signed short [int] int unsigned int signed int long unsigned long [int] signed long [int]2浮点型 float double3构造类型 数组类型结构体类型 struct枚举类型 enum联合类型 union4指针类型 int *pi; char *pc; float* pf; void* pv;5空类型 void 表示空类型无类型 通常应用于函数的返回类型、函数的参数、指针类型二.整形在内存中的存储 1原码.反码.补码 三种表示方法均有符号位和数值位两部分符号位都是用0表示‘正’用1表示‘负’数值位正数的原反补都相同负整数的原反补各不相同 原码直接将数值按照正负数的形式翻译成二进制就可以得到原码 反码将原码的符号位不变其他位按位取反就可以得到反码 补码反码1就得到补码 对于整形来说数据存放内存中其实存放的是补码 为什么呢 在计算机系统中数值一律用补码来表示和存储。原因在于使用补码可以将符号位和数值域统 一处理同时加法和减法也可以统一处理CPU只有加法器此外补码与原码相互转换其运算过程是相同的不需要额外的硬件电路 我们看看在内存中的存储 可以看到对于a和b分别存储的是补码但是我们发现顺序有点不对劲下面来解释一下原因 2大小端介绍 大端是指数据的低位保存在内存的高地址而数据的高位保存在内存的低地址中 小端是指数据的低位保存在内存的低地址而数据的高位保存在内存的高地址中 下面来设计一个小程序来判断当前机器的字节序吧 #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; }三.浮点型在内存中的存储 一个浮点数存储的例子来引入话题吧 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; }num 和 *pFloat 在内存中明明是同一个数为什么浮点数和整数的解读结果会差别这么大要理解这个结果一定要搞懂浮点数在计算机内部的表示方法详细解读 根据IEEE任意一个二进制浮点数V可以表示成下面的形式 ~-1^SM2*E ~ (-1)^S表示符号位当S0V为正数当S1V为负数 ~ M表示有效数字大于等于1小于2 ~ 2^E表示指数位 举例来说 十进制的5.0写成二进制是 101.0 相当于 1.01×2^2 。 那么按照上面V的格式可以得出S0M1.01E2 十进制的-5.0写成二进制是 -101.0 相当于 -1.01×2^2那么S1M1.01E2 IEEE 754规定 对于32位的浮点数最高的1位是符号位s接着的8位是指数E剩下的23位为有效数字M 对于64位的浮点数最高的1位是符号位S接着的11位是指数E剩下的52位为有效数字M IEEE 754对有效数字M和指数E还有一些特别规定1≤M2 也就是说M可以写成 1.xxxxxx 的形式其中xxxxxx表示小数部分IEEE 754规定在计算机内部保存M时默认这个数的第一位总是1因此可以被舍去只保存后面的xxxxxx部分比如保存1.01的时候只保存01等到读取的时候再把第一位的1加上去。这样做的目的是节省1位有效数字。以32位浮点数为例留给M只有23位将第一位的1舍去以后等于可以保存24位有效数字 至于指数E情况就比较复杂首先E为一个无符号整数unsigned int这意味着如果E为8位它的取值范围为0~255如果E为11位它的取值范围为0 ~ 2047但是我们知道科学计数法中的E是可以出 现负数的所以IEEE 754规定存入内存时E的真实值必须再加上一个中间数对于8位的E这个中间数是127对于11位的E这个中间数是1023。比如2^10的E是10所以保存成32位浮点数时必须保存成10127137即10001001 然后指数E从内存中取出还可以再分成三种情况 E不全为0或不全为1 这时浮点数就采用下面的规则表示即指数E的计算值减去127或1023得到真实值再将有效数字M前加上第一位的1比如0.51/2的二进制形式为0.1由于规定正数部分必须为1即将小数点右移1位则为1.0*2^(-1)其阶码为-1127126表示为01111110而尾数1.0去掉整数部分为0补齐0到23位00000000000000000000000则其二进制表示形式为:0 01111110 00000000000000000000000 E全为0 这时浮点数的指数E等于1-127或者1-1023即为真实值有效数字M不再加上第一位的1而是还原为0.xxxxxx的小数这样做是为了表示±0以及接近于0的很小的数字 E全为1 这时如果有效数字M全为0表示±无穷大正负取决于符号位s 解释一下前面的题目哈 下面让我们回到一开始的问题为什么 0x00000009 还原成浮点数就成了 0.000000 首先9在计算机中是以补码存储的 9 - 0000 0000 0000 0000 0000 0000 0000 1001如果以浮点数读取的话得到第一位符号位s0后面8位的指数 E00000000 最后23位的有效数字M000 0000 0000 0000 0000 1001由于指数E全为0所以符合上一节的第二种情况。因此浮点数V就写成 显然V是一个很小的接近于0的正数所以用十进制小数表示就是0.000000 再看例题的第二部分 请问浮点数9.0如何用二进制表示还原成十进制又是多少 首先浮点数9.0等于二进制的1001.0即1.001×2^3 那么第一位的符号位s0有效数字M等于001后面再加20个0凑满23位指数E等于3127130即10000010所以写成二进制形式应该是sEM即 这个32位的二进制数还原成十进制正是 1091567616
http://www.w-s-a.com/news/833675/

相关文章:

  • wordpress中.htaccess新上线的网站怎么做优化
  • 家教网站怎么做网站建设品牌推荐
  • 青岛做外贸网站建设茶叶公司网站建设策划书
  • 个人电脑做网站主机三合一网站
  • 用html框架做网站怎么在.Net中做团购网站
  • 怎样建一个自己公司的网站制作网站需要钱吗
  • 联盟网站制作wap网站制作公司
  • 美丽乡村建设发展论坛网站wordpress 仿站 教程网
  • 浙江省建设注册管理中心网站首页优设设计网站导航
  • 台州小型网站建设国内免费的建网站平台
  • 自己做网站不推广网站建设工作室发展
  • 有女人和马做网站吗宁波seo优势
  • 网站做用户记录表电商运营推广计划方案
  • 网站备案认领杭州网页设计公司招聘
  • 易签到网站开发设计做网站运营有前途吗
  • 南通网站建设心得2023必考十大时政热点
  • 苍溪建设局网站公建设计网站
  • 九歌人工智能诗歌写作网站电子商务网站建设项目书
  • 做外贸的经常浏览的三个网站律师做哪个网站好
  • 中国公路建设招标网站长沙大型网站建设公司
  • 沈阳企业网站模板建站注册电子邮箱免费注册
  • 如何做简洁网站设计企业网站排名优化方案
  • 东莞网站建设服务商做触屏网站
  • 外国网站代理音乐网站建设
  • 珠江网站建设广安广告公司
  • 高端创意网站建设网页制作咨询公司
  • 网站建设及发布的流程图wordpress文章摘要显示
  • 淮北网站网站建设省好多会员app
  • 如何查看网站的更新频率网站图片要求
  • 网站设计公司收费标准wordpress修改文章链接