各变量可以表示数的范围

对于无符号数,根据占用的位数可以直接计算:
unsigned short 16位 0~2的16次方-1(即65535)【十进制,以下都是】
unsigned int 16位 0~2的16次方-1(即65535)
unsigned long 32位 0~2的32次方-1(即4294967295)

对于有符号数,由于0也占用一个位置,导致负数的边界值与正数的边界值不一样:
short 16位 - 2的(16-1)次方~2的(16-1)次方-1(即-32768~32767)
int 16位 - 2的(16-1)次方~2的(16-1)次方-1(即-32768~32767)
long 32位 - 2的(32-1)次方~2的(32-1)次方-1(即-2147483648~2147483647
而所谓“位”,就是bit 的意思,一个 “位” 代表一个 "0"或一个“1”的二进制。那么16位数据的话,就是代表 16个 0/1的二进制。
一个二进制的16位加以换算,可以代表 0~65535的十进制,是一个比较庞大的数据,十六位和三十二位的构成就大致如下面这种:(0000000000000000)二进制 = (0)十进制(1111111111111111)二进制 = (65535)十进制
 
名称
位数
数的范围
double
64
1.7E–308~1.7E+308
float
32
3.4E–38~3.4E+38

浮点数是一串0和1构成的位序列(bit sequence),从逻辑上用三元组{S,E,M}表示一个数N,如下图所示:


★ S(sign)表示N的符号位。对应值s满足:n>0时,s=0; n≤0时,s=1。
★ E(exponent)表示N的指数位,位于S和M之间的若干位。对应值e值也可正可负。
★ M(mantissa)表示N的尾数位,恰好,它位于N末尾。M也叫有效数字位(significand)、系数位(coefficient), 甚至被称作"小数"。


例如314e-2表示314×10的-2次方


实数3.14159在内存中的存放形式为+.3141591,+为数符,.314159为小数部分,1为指数10^1,所以单精度提供的是7位有效数字。


32位浮点数 即 float 型数。按 IEEE 标准,最大数值范围 是正负 3.40282e+038 。有效数字精度是 6 到 7 位 (十进制 )。至于书写,你愿意写多少位,可以写多少位,只要在允许的数值范围以内。例如:
3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534 21170679821480865132823

但精度只到 3.141593


测试:
3.1415926

40 49 0F DA


3.14159265
40 49 0F DB    可以看出被四舍五入了

3.1415927
40 49 0F DB

3.1415926535897    更多的位数没有被显示
40 49 0F DB



其他???

31.415926
41 FB 53 D1

3.14
40 48 F5 C3


末尾精度问题
3.141592
40 49 0F D8


3.1415921
40 49 0F D8


3.1415922
40 49 0F D9


3.1415923
40 49 0F D9


3.1415924
40 49 0F DA


3.1415925
40 49 0F DA


3.1415926
40 49 0F DA


3.1415927
40 49 0F DB


3.1415928
40 49 0F DB


3.1415929
40 49 0F DC


3.141593
40 49 0F DC


3.1415931
40 49 0F DD


3.1415932
40 49 0F DD


看这个进位应该是基于二进制层面的,0舍1入?


3.141591
40 49 0F D4



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值