java Number小结


Byte

  • 长度:1byte/8bit
  • 最大值:127 0b0111_1111
  • 最小值:-128 0b1000_0000

Short

  • 长度:2byte/16bit
  • 最大值: 2^15 32767 0x7fff 0b0111_1111_1111_1111
  • 最小值:-2^15 -32768 0x8000 0b1000_0000_0000_0000

Integer

  • 长度:4byte/32bit
  • 最大值: 2^31 -21亿 0x7fffffff
  • 最小值:-2^31 -21亿 0x80000000

Long

  • 长度:8byte/64bit
  • 最大值: 2^63 约9*10^18
  • 最小值:-2^63

关于单精浮点数和双精浮点数结构

根据IEEE754标准,Float和Double的计算公式

在单精度时: 
  V=(-1)^s*2^(E-127)*M    
在双精度时: 
  V=(-1)^s*2^(E-1023)*M 

以float为例,float长度32位,位数从高到低

  • 第1位为s符号位,1为负值,0为正值
  • 第2-9位共8位为指数为E,取值范围0255,减去偏移量127后,指数取值范围-127-128,其中取值0(全0)和255(全1)有特殊用途,因此指数实际取值范围-126127
  • 剩余23位为小数位,表示24数字,省略了前导整数位1,即一般情况下M≥1.0

(对于Double,E为11位,M为52位)

当指数位取值1,小数位取最小值时,即0x00800000,获得float最小正标准值2^(-126)。

关于最小正标准值与最小正值的区别,摘抄一段stackoverflow中的回答:

For the single format, the difference between a normal number and a subnormal number is that the leading bit of the significand (the bit to left of the binary point) of a normal number is 1, whereas the leading bit of the significand of a subnormal number is 0. Single-format subnormal numbers were called single-format denormalized numbers in IEEE Standard 754.

也就是说,最小正标准值是保证小数位前导位为1的最小值。

非规格化表示:

当指数位全0时,小数位前导整数位由1变为0,此时取值范围:

2^(-126)*2^(-23) ~ 2^(-126)*(1-2^(-23))
此时的最小值也是float的正最小值,2^(-149)

特殊表示:

  • 当指数位和小数位全0时,表示0值,有+0和-0之分。
  • 当指数位全1,小数位不全0时,表示NaN。Java中用0x7fc00000表示NaN。
  • 指数部分全1,小数部分全0,表示无穷大,Java中用0x7f800000表示正无穷大,0xff800000表示负无穷大。

关于+0和-0,《java语言规范》中说的很明确:

Positive zero and negative zero compare equal; thus the result of the expression 0.0==-0.0 is true and the result of 0.0>-0.0 is false. But other operations can distinguish positive and negative zero; for example, 1.0/0.0 has the value positive infinity, while the value of 1.0/-0.0 is negative infinity.

对于float类型的+0.0f与-0.0f

  • +0.0 == -0.0
  • +0.0 > -0.0 = false
  • 1.0/+0.0 = 0x7f800000
  • 1.0/-0.0 = 0xff800000

关于NaN,同样来自《java语言规范》:

NaN is unordered, so:

•The numerical comparison operators < , <= , > , and >= return false if either or both operands are NaN (§15.20.1).

• The equality operator == returns false if either operand is NaN.
In particular, (x<y) == !(x>=y) will be false if x or y is NaN.

• The inequality operator != returns true if either operand is NaN (§15.21.1).
In particular, x!=x is true if and only if x is NaN.

  • 对于float值x,y,如果 x,y至少一个为NaN,那么 < , <= , > , >= ,== 都返回false。(x < y) == !(x >= y) 返回false。

  • 当且仅当x = NaN时,x!=x返回true。

综合以上,可以得到float的正最小值为2^(-149),即0x00000001,正最大值为0x7f7fffff,也即0x7fffffff-0x00000001(正无穷大-正最小值)

Float

  • 长度:4byte/32bit
  • 正最大值:0x7f7fffff,约3.4*10^38
  • 正最小值:0x00000001,月1.4*10^(-45)

对于Float的equals方法,比较的是两个float值的二进制表示,因此+0.0f.equals(-0.0f)返回false,NaN.equals(NaN)返回true,这是FLoat与float不同的地方。

Double

  • 长度:8byte/64bit
  • 正最大值:1.8*10^308
  • 正最小值:4.9*10^(-304)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容

  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 9,438评论 0 13
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,307评论 0 2
  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom阅读 2,689评论 0 3
  • TF API数学计算tf...... :math(1)刚开始先给一个运行实例。tf是基于图(Graph)的计算系统...
    MachineLP阅读 3,422评论 0 1
  • 过年了,过年了 红包满屋跑 糖果把把抓 还有许多胖娃娃 能陪我笑 和我闹 早晨睁眼鸡蛋瘦肉面飘香 晚上睡觉偷偷把牛...
    江心风亭阅读 199评论 0 3