内存中数据的存储(更新了十六进制数大小端存储) |
您所在的位置:网站首页 › c语言内存地址排列顺序 › 内存中数据的存储(更新了十六进制数大小端存储) |
内存中数据的存储(更新了十六进制数大小端存储)
文章目录
内存中数据的存储(更新了十六进制数大小端存储)一、整型在数据中的存储二、浮点型在数据中的存储
一、整型在数据中的存储
在计算机中整型的表示有三种:原码、反码、补码 三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位正负表示方法不同 原码 将原来整型换算成二进制数 PS : 二进制数如何换算 例子:整数125 笔算:1111101 或者用计算机里面自带的计算器 反码 将原码的符号位不变,其他位依次按位取反就可以得到了 反码+1就得到补码 PS:正数的原、反、补码都相同,整型数据存放内存中其实存放的补码 在计算机系统中,数值一律用补码来表示和存储 原因在于,使用补码,可以将符号和数值统一处理,加法和减法也可以统一处理(CPU只有加法器) 补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。 十六进制和整型数据的存储 计算机中,二进制数可以转为十六进制数,一个十六进制数相当于4个2进制,也就是4个bit,两个十六进制数为一个字节 大端:数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中 小端:数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地址中 例子: int a = 0x123; //在内存中,int类型有4个字节,2个二进制数为一个字节 //所以有8个十六进制进制数 //补齐0是 0x 00 00 01 23 // 数据高位-------------数据地位 // 内存中: // 大端 00 00 01 23 // 小端 23 01 00 00 // 低地址-----------------高地址 二、浮点型在数据中的存储根据国际标准IEEE(电气和电子工程协会) 任意一个二进制浮点数V可以表示成下面的形式: (-1)^S * M * 2^E (-1)^s 表示符号位 当s=0,V为正数 当s=1,V为负数 M表示有效数字,大于等于1,小于2 2^E表示指数位 十进制数 5.5 如何转化为二进制数字 先看整数部分:5即为101 ( 1*2^2 + 0*2^1 + 1*2^0 = 5 ) 而小数部分:0.5即为.1 (1*2^-1 = 0.5) 其他小数以此类推 如何将此小数用IEEE标准表示 先将5.5的二进制数变成科学计数法 101.1 = 1.011 * 2 ^ 2 (因为移动了 两位数,类比十进制的10 ^ 2) s = 1;M = 1.011;E = 2(移动了2位); 但一些特殊的数字 比如 3.3 11.?? 再去用2的负1负2这种去表示表示不完,结果会四舍五入保存 所以浮点型的数字只需要保存SME就可以 针对float类型而言(4btye) S是直接放进去,而EM值则为与EM相关的数值存进去 针对double类型(8btye) 对于64位的浮点数,最高的1位是符号位S,接着的11位是指数E,剩下的52位为有效数字M。 但IEEE 754 指出 关于M M永远 1≤M |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |