栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

文章目录
  • 一、数据类型
  • 二、整数在内存中的存储
    • 2.1、原码、反码、补码
    • 2.2、大小端
  • 三、浮点数在内存中的存储
    • 3.1存
    • 3.2取

一、数据类型
char //字符数据类型
short //短整型
int //整型
long //长整型
long long //更长的整型
float //单精度浮点数
double //双精度浮点数

以上七种数据类型可以分为两类
1.整型家族(char、short、int、long、long long)
2.浮点型家族(float、double)
二、整数在内存中的存储 2.1、原码、反码、补码
   计算机中的整数有三种2进制表示方法,即原码、反码和补码。
   三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而
正数的原、反、补码都相同。
   负整数的三种表示方法各不相同。
   **原码:正负形式直接写出二进制序列
   反码:原码符号位不变,其他位按位取反
   补码:反码加一**
    eg. b=-10
    二进制表示
    1000 0000  0000 0000  0000 0000  0000 1010   ->原码
    1111 1111  1111 1111  1111 1111  1111 0101   ->反码
    1111 1111  1111 1111  1111 1111  1111 0110   ->补码
    十六进制表示
    0x 80 00 00 0a  ->原码
    0x ff ff ff f5  ->反码
    0x ff ff ff f6  ->补码
知识点1. 整数家族在内存中存补码,且倒着存(VS环境下,为小端字节序存储)
         why.更方便计算,CPU只有加法器,存补码运算时可以直接用补码相加。
知识点2. 原码->补码:取反加一
         补码->原码:取反加一
知识点3. 整型家族都可分为 signed 和 unsigned
知识点4. signed 整型存储时第一位为符号位,不是有效位
         unsigned整型存储时第一位为有效位,没有符号
2.2、大小端
**大端字节序存储、小端字节序存储**

大端字节序存储:把一个数的高位字节序放在低地址
小端字节序存储:把一个数的高位字节序放在高地址

eg. 0x 11 22 33 44
      高位      低位

三、浮点数在内存中的存储 3.1存
 浮点数都可以写为
         **V=(-1)^S * M * 2^E**
         
 eg. 5.0f ----->101.0 ----->(-1)^0 * 1.01 * 2^2
     9.5f ----->1001.1 ----->(-1)^0 * 1.0011 * 2^3
     9.6f ----->无法精确用二进制表示,因此无法精确保存
     
 **存储时是对S、M、E进行存储**
 
 1.因为M是1到2的一个数,小数点前一定会有一个1,所以不用存这个1
 2.对于指数E,存储时要加上127(32位)或者1023(86位),再转为二进制
   why.为了方便存储负指数


3.2取
 浮点数从内存中取出,要根据 E 分为三种情况
 
 1.E不全为1或者不全位0
   此时就按照存入的相反操作取出就行
   
 2.E全为1,则此浮点数无穷大

 3.E全为0,则此浮点数无穷小,为0
暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1015776.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号