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

C语言--------数据在内存中的存储

1.整数在内存中的存储

整数在内存是以补码的形式存在的;

整型家族包括char,int ,long long,short类型;

因为char类型是以ASCII值形式存在,所以也是整形家族;

这四种都包括signed,unsigned两种,即有符号和无符号;

当我们只写char,int ,long long,short时候,会被默认是有符号的;

分析过程:

100行:-1的二进制原码;

101,102行:-1的反码和补码;

103行:32比特位,4个字节,char只有1个字节,4个字节放到1个字节里面不够放,所以会截断,即只保留最后的8个比特位;

106行:根据自身类型进行整形提升得到补码;char a和signed char b都是有符号的,所以提升的时候补上最高位,也就是1;

107,108行:进行转化,得到原码,因为打印的是原码

112行:根据自身类型进行整形提升得到补码;无符号的c高位补上0得到补码;高位是0--->正数-->原码反码补码相同,二进制转换十进制得到255;

2.大小端字节序的判断

其实超过⼀个字节的数据在内存中存储的时候,就有存储顺序的问题,按照不同的存储顺序,我们

分 为⼤端字节序存储⼩端字节序存储

大端:低位字节在高地址处,高位字节在低地址处;

小端:低位字节在低地址处,高位字节在高地址处;

95行是:10的二进制表示;

96行是:转换成16进制,依据4个2进制位转换成1个16进制位;

由图知:低位0a位于低地址614(614,615,616,617是a的地址,相互比较,614是低地址),由此可见这是小端存储。

3.浮点数在内存里面的存储

任意⼀个⼆进制浮点数V可以表⽰成下⾯的形式: V   =  (−1)^S* M *2^E;

float类型:32比特位,SEM对应1,8,32;

double类型:64比特位,SEM对应1,11,52;

例如9.0可以写作1001.0--->1.001*2^3;

(1)浮点数存的过程

M在1~2之间,所以存的时候只存小数部分,就是小数点以后的;

E是一个无符号整数,所以可能是负数,例如,1.5就是1*2^-1因为2的-1次方就是0.5,

存的时候,float型的E要加上127,double型的要加上1023;

(2)浮点数取的过程

0.5 的⼆进制形式为0.1,则为1.0*2^(-1),其 E为-1+127(中间值)=126(存),表⽰为01111110,⽽尾数1.0去掉整数部分为0,补⻬0到23位 00000000000000000000000,存的时候加上127,取的时候减去127;

当E全是0:浮点数的指数E等于-126(-1022),有效数字M不再加上第⼀位的1,⽽是还 原为0.xxxxxx的⼩数;

当E全是1:表示无穷大;

以此为例:int n以float打印时,9是1001.0,1.001*2^3;

0000 0000 0000 0000 0000 0000 0000 1001(存)

S=0;E全是0;所以E是-126(取);

就是(-1)^0*0.000 0000 0000 0000 0000 0000 1001*2^-126,所以打印0.000000;

浮点数9.0 等于⼆进制的1001.0,

是:1.001×2^3    -------->所以: 9.0  =  (−1)^0*  (1.001)  ∗  2^3;

E=3+127=130;

0 10000010 001 0000 0000 0000 0000 0000

首位0表示是正数,原码反码补码相同,打印1091567616。

http://www.lryc.cn/news/299465.html

相关文章:

  • 【Java】零基础蓝桥杯算法学习——线性动态规划(一维dp)
  • Excel模板1:彩色甘特图
  • 如何重新安装 macOS
  • 论文阅读-Pegasus:通过网络内一致性目录容忍分布式存储中的偏斜工作负载
  • 【PTA|编程题|期末复习】字符串(一)
  • 数据库基本操作2
  • BTC破5W+QAQ
  • Xubuntu16.04系统中修改系统语言和系统时间
  • 内网穿透 | 推荐两个免费的内网穿透工具
  • Android中代码生成图片高级部分
  • 计算机网络——09Web-and-HTTP
  • 【教程】MySQL数据库学习笔记(一)——认识与环境搭建(持续更新)
  • 软件测试-测试用例研究-如何编写一份优秀的测试用例
  • 计网day1
  • vLLM vs Text Generation Interface:大型语言模型服务框架的比较
  • [AIGC] 上传文件:后端处理还是直接阿里云OSS?
  • 速盾cdn:香港服务器如何用国内cdn
  • 深入学习Pandas:数据连接、合并、加入、添加、重构函数的全面指南【第72篇—python:数据连接】
  • IDEA中mybatis配置文件表名显示红色,提示 Unable to resolve table ‘xxx‘
  • Python基于大数据的电影预测分析系统
  • 【MATLAB】小波神经网络回归预测算法
  • 最新Burp Suite入门讲解
  • 【C++】模版初阶
  • Stable Diffusion 模型下载:DreamShaper(梦想塑造者)
  • GPT-4模型的创造力
  • 没用的计算器
  • 基于 Python 的大数据的电信反诈骗系统
  • 二、ClickHouse简介
  • C++ 11新特性之并发
  • jvm问题自查思路