数据在计算机内都是二进制存储的,存储运算都使用的是补码。
原码
就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
反码
正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
补码
正数的补码与其原码相同;负数的补码是在其反码的末位加1。
浮点数在计算机中存储分为3个部分:
IEEE 754格式的浮点数由三个字段组成:符号位,偏置指数和分数
单精度浮点数float符号位占1个字节、偏移指数占8个字节、分数占23个字节
1、把浮点数转为2进制形式,如0.00101
2、将二进制形式移位变成科学技术法形式,如:0.00101 = 1.01 * 2^-3
3、得到分数和指数,如这里分数为.01,指数为-3
4、偏差指数 = 指数 + 偏差 float的偏差为127,这里得到偏差指数为 124
5、存储格式为:符号位 + 偏差指数(2进制) + 偏差 ,如这里存储为0 00011111 0100000 00000000 00000000
32位浮点数转二进制存储:
* 步骤1:整数转二进制 不停/2的做法,将每个余数依次相加
* 步骤2:小数转二进制 不同*2 <1 计0, >1 计1,用(x-1)继续往后做*2操作
* 步骤3:整数部分和小数部分二进制粘合起来,注意小数点不要去除
* 步骤5:将2进制变成1.xxxx * 2^n 次方的形式,整数+小数一共24位,小数点不计位数,对应IEEE 754-1985标准中的小数占位,(第24位可能要采用前面的舍入原则), 得到指数
* 步骤6:利用指数-标准偏差值(float为127)得到偏差指数
* 步骤7:符号位+偏差指数的二进制(8位)+小数部分二进制 就是该float的存储形式的原码,存储即是原码转为补码存储。
* 维基百科中float的例子的操作: 0.15625得到原码
* 整数部分0,得到二进制也就是0
* 小数部分:
* 0.15625 * 2 = 0.3125 0
* 0.3125 * 2 = 0.625 0
* 0.625 * 2 = 1.25 1
* 0.25 * 2 = 0.5 0
* 0.5 * 2 = 1.0 1
* 0 * 2 = 0 0
* ......
* 粘合得到二进制为:0.00101000000000000000000.....
* 转换1.xx * 2^n 形式,并截取长度为24: 1.0100000 00000000 00000000 * 2 ^ -3
* 得到偏差指数为127 -3 = 124
* 124转二进制 8位存储为:00011111
* 填充符号位 + 偏移指数 + 小数存储部分 得到原码: 0 00011111 0100000 00000000 00000000
浮点型在计算机内的存储方式
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
【计算机网络】计算机网络的概念
【计算机网络】第一章——计算机网络体系结构详细介绍计算机网络的概念……
计算机网络 互连网 互联网 -
【计算机组成原理】详谈计算机发展历程
【计算机组成原理】第一章——计算机系统概述详细介绍计算机的发展历程……
微型计算机 个人计算机 高级语言 -
计算机内存数值存储方式
文章目录计算机内存数值存储方式原码反码补码主要原因:有符号和无符号的区别:有符号和无符
计算机内存 原码 反码 补码 有无符号 -
浮点数在计算机中的存储方式
类型还是 double 类型,在存储方式上都是遵从IEEE的规范: float遵从的是 IEEE R32.24...
字符集 编码 基础 数据 存储方式 -
计算机内存
:速缓存读取数据和向其中写入数据,当
缓存 高速缓存 主存