本文转载自微信公众号「编程学习基地」,作者DeRoy 。转载本文请联系编程学习基地公众号。
定点数和浮点数
本文中所提到的都是基于intel x86Cpu,开发环境是基于windows 10 + vs2019。本片博客需要读者自己明白十进制、十六进制、二进制之间的转换,文中不会介绍转换过程,需要了解详细过程的情查找相关资料。
首先我们简单的介绍一下计算机中数据存储的基础知识,具体内容在大学课程《计算机组成原理》中有详细的介绍。计算机中对数据的存储是有两种形式,一种是以定点数方式存储即C/C++中的char、short、int、long、longlong,另一种就是以浮点数的方式存储即C/C++中的float、double。
定点数中char、short、int、long、longlong存储原理都是一样的,只是长度不同,所以我们选取int型详细介绍,浮点数中float、double原理也是一样的.
其中,定点数和浮点数都是最高位表示符号位(0表示正数1表示负数)其余位表示数值,字节是倒叙存数(小端模式)的也就是说高字节在左边低字节在右边。
定点数
定点数比较简单,计算机中存储的是真实值,计算机采用4字节(32位)存储int变量,例如:int value = 1 ; 则value转化成二进制0000 0000 0000 0000 0000 0000 0000 0001为了书写方便我们写成16进制形式为00 00 00 01。由于计算机是倒叙存储所以计算机中存储为01 00 00 00。
浮点数
下面介绍一下浮点数float存储,C/C++中float存储标准是基于IEEE754,具体内容是一个数值,可以使用科学计数法方式表示,即可以写成:
A * 2^n
其中A为尾数,2为底数,n为指数。
由于底数为2所以所有A都是大于1小于2,也就是都可以写成1.xxxx*2的n次方,所以计算机为了节省空间,可以不存储整数部分的1,因为所有的浮点数都有那个1我们转换的时候把那个1算进去就可以了。n可以是正数也可以是负数(float需要加上127,double加上1023)。
浮点数的存储是由符号位 (sign) + 指数位 (exponent) + 小数位 (fraction) 组成。
类型 | 符号位 | 指数 | 尾数 |
---|---|---|---|
Float | 1位(第31位) | 8位(第23~30位) | 23位(第0~22位) |
Double | 1位(第63位) | 11位(第52~62位) | 52位(第0~51位) |
本文中的五个步骤有助于您掌握转型的总体需求,并有助于您处理一些真正重要的事...
【51CTO.com快译】数字化转型使应用程序领导人必须找到有效的方法来更新改造遗留...
时间真快呀!转眼又至周一。让我们卯足干劲继续前行,先来看看上周有哪些不容错...
2020年以来,由疫情停工减产所导致的缺芯困局影响着全球汽车发展,而本以为2021...
2020年11月26日深圳潮数科技于石家庄成功召开数据安全 新时代新基建信息应用之基...
在疫情的影响下,人们的工作和生活方式在过去的一年发生了前所未有的变化。为了...
根据TrendForce的最新调查,自2020年初以来,COVID-19流感大流行加速了世界各地...
人头马君度(Rmy Cointreau)的历史非常重要,这家酒业公司以将最好的酒陈化100年...
根据调查,随着用户对计算能力、存储和网络容量的需求增长,服务器需求比经济不...
在VMworld 2020,VMware宣布与NVIDIA进行全面合作,共同推出新一代的混合云架构...