淄博找能做网站的公司江苏大汉建设实业集团网站
淄博找能做网站的公司,江苏大汉建设实业集团网站,wordpress怎么做论坛,英铭网站建设整数和浮点数在内存中的存储方式是不一样的#xff0c;今天#xff0c;我们来具体学习一下 文章目录 整数在内存中的存储浮点数在内存中的存储 整数在内存中的存储
我们在之前就已经了解过了整数有原码#xff0c;反码#xff0c;补码的形式#xff0c;这三种方式都是二进…整数和浮点数在内存中的存储方式是不一样的今天我们来具体学习一下 文章目录 整数在内存中的存储浮点数在内存中的存储 整数在内存中的存储
我们在之前就已经了解过了整数有原码反码补码的形式这三种方式都是二进制 三种表⽰⽅法均有符号位和数值位两部分符号位都是⽤0表⽰“正”⽤1表⽰“负”⽽数值位最 ⾼位的⼀位是被当做符号位剩余的都是数值位。 原码整数直接变成二进制的形式 反码 原码的符号位不变其他位按位取反得到的就是反码 补码反码加一得到的就是补码 对于整数来说都是以补码的形式存储到计算机中的。 这是因为使⽤补码可以将符号位和数值域统⼀处理
同时加法和减法也可以统⼀处理CPU只有加法器此外补码与原码相互转换其运算过程是 相同的不需要额外的硬件电路。
大端和小端存储方式
首先什么是大小端存储呢 ⼤端存储模式是指数据的低位字节内容保存在内存的⾼地址处⽽数据的⾼位字节内容保存 在内存的低地址处。 ⼩端存储模式是指数据的低位字节内容保存在内存的低地址处⽽数据的⾼位字节内容保存 在内存的⾼地址处。 这就是一个大小端的简单判断这里低地址存放的是十六进制的44低地址存放的的低位字节所以这时一个小端存储的机器。
下面我来分享一个非常巧妙的判断大小端的代码 利用了联合体
#include stdio.h
int main() {union {int a;char ch;} u;u.a 1;if (u.ch 1)printf(小端);elseprintf(大端);return 0;}为什么会有大小端之分呢 超过⼀个字节的数据在内存中存储的时候就有存储顺序的问题 因为在计算机系统中我们是以字节为单位的每个地址单元都对应着⼀个字节⼀个字节为8 bit 位但是在C语⾔中除了8 bit 的 char 之外还有16 bit 的 short 型32 bit 的 long 型要看 具体的编译器另外对于位数⼤于8位的处理器例如16位或者32位的处理器由于寄存器宽度⼤ 于⼀个字节那么必然存在着⼀个如何将多个字节安排的问题。因此就导致了⼤端存储模式和⼩端存 储模式。
浮点数在内存中的存储
根据国际标准IEEE电⽓和电⼦⼯程协会 754任意⼀个⼆进制浮点数V可以表⽰成下⾯的形式 V (−1) ^ S* M * 2^E (−1)^S 表⽰符号位当S0V为正数当S1V为负数 M表⽰有效数字M是⼤于等于1⼩于2的 E 表⽰指数位 ⼗进制的5.0写成⼆进制是 101.0 相当于 1.01×2^2 。 那么按照上⾯V的格式可以得出S0M1.01E2。
float类型 double类型
前⾯说过 1≤M2 也就是说M可以写成 1.xxxxxx 的形式其中 xxxxxx 表⽰⼩数部分。 IEEE 754 规定在计算机内部保存M时默认这个数的第⼀位总是1因此可以被舍去只保存后⾯的 xxxxxx部分。⽐如保存1.01的时候只保存01等到读取的时候再把第⼀位的1加上去。这样做的⽬ 的是节省1位有效数字。以32位浮点数为例留给M只有23位将第⼀位的1舍去以后等于可以保 存24位有效数字。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/89125.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!