数据的表示与存储
来源:互联网 发布:sql创建主键语句 编辑:程序博客网 时间:2024/05/22 13:59
1. 前言
一直打算写些什么,今天终于迈出了第一步。
本文讨论了数据在计算机中的表现和存储形式。
2.符号数
符号数是数值在计算机中的二进制表示形式,分为有符号数和无符号数。
有符号数:机器字长中的最高位被称为符号位,0代表正数,1代表负数。
无符号数:机器字长中的所有二进制位都用于表示数值,也就是不存在负数。
在JAVA语言中,不存在无符号数。
3.整型数据的原码、反码与补码
3.1 正整型
对于正整数而言,它的原码、反码与补码相同。
以占1个字节的byte型数据为例:
2的原码/反码/补码皆为:0000,0010
3.2 负整型
首位的1代表负数,例如:
2的原码为:1000,0010
反码(符号位不变,其余位置取反):1111,1101
补码(+1):1111,1110
4.补码的作用
采用补码的方式,计算机可以将减法运算转化为加法运算。
例如:
5.浮点型数据
存储形式:
浮点型的以IEEE浮点标准进行存储:将特定长度的连续字节的所有二进制位分割为特定宽度的符号域,指数域和尾数域三个域,分别用于表示给定二进制浮点数中的符号(s),指数(E)和尾数(M)。
V=(−1)s×M×2E
以十进制数-123.456为例,−123.456=−1.23456×102 ,1.23456为尾数,2为指数,符号位为1。
符号位 阶码 尾数 长度 float 1 8 23 32 double 1 11 52 64
- 示例:以float型数据5.2f为例
5=0101 0.2*2=0.4*2=0.8*2=0.6*2=0.2*2=0.4...... 0 0 1 1 0
- 5的二进制表示为0101;
0.2的二进制表示(*2取余顺排):0.00110011……
此处,0.2的二进制表示为无限循环小数,所以5.2f在计算机中无法实现精确表示。
由于float的尾数为23位,所以5.2f的二进制表示为101.0011,0011,0011,0011,0011;用科学计数法表示为1.0100,1100,1100,1100,1100,11×22
规定小数点左侧只能为1,并且1可以省略。所以,末尾再添加一位(根据该位置原有的数据填写),变为.0100,1100,1100,1100,1100,110×22
所以5.2f的尾数为0100,1100,1100,1100,1100,110。
指数为2,阶码占8位,且有符号。根据IEEE标准,可以得出float的偏置量Bias=2k−1−1=28−1−1=127阶码e=指数E+偏置量Bias=2+127=129
所以5.2f的阶码为129=1000,0001
因此,5.2f在计算机中的表示形式为0 | 1000,0001 | 0100,1100,1100,1100,1100,110。
参考文档:
1.http://blog.csdn.net/jjj19891128/article/details/22938429
2.http://blog.csdn.net/jjj19891128/article/details/22945441
感谢!!!
阅读全文
0 0
- 数据的表示与存储
- 深入理解计算机系统之数据的表示与存储
- 数据的表示和存储
- 信息的存储与表示
- 信息的表示与存储
- 串的定长数据存储表示
- 数据的存储和表示-测验题
- 计算机中数的表示与存储
- 计算机中数的表示与存储
- 计算机中数的表示与存储
- 串的链式存储表示与实现
- 二叉树的存储表示与实现
- 浮点数的表示与存储方法
- 数据的表示和存储模式,数据类型的变迁
- 数据与文字的表示方法
- 字符串的定长顺序存储表示与块链存储表示
- 深入研究数据在机器内的存储表示
- 浮点型数据在内存中存储的表示
- as 导入eclipse项目报错:Error:Application and test application id cannot be the same: both are 'com.hjy.act
- 商城项目--产品的加减中的watch监听
- 外网远程桌面连接内网服务器教程(超详细)
- jquery操作select(取值,设置选中)
- 区别 chown和chmod的用法
- 数据的表示与存储
- memcached在linux下的安装
- 51nod 1603 限高二叉排列树(求补思想->DP)
- 在cmakeLists中这是多平台兼容
- constexpr
- java面试题全集(上)
- 简单工厂模式
- linux和windows gcc g++ vc编译器字节对齐
- MFC 拖拽文件到Edit控件后在Edit中显示文件路径及名称