日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java忽略算术溢出,IEEE-754:“最小”溢出条件

發布時間:2025/4/5 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java忽略算术溢出,IEEE-754:“最小”溢出条件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Before I start, just some background information:

我正在使用編譯器標準數學庫(符合IEEE-754)在Keil uVision3中編譯的ARM7微控制器(LPC2294 / 01)上運行裸機應用程序 .

The issue: I 'm having trouble wrapping my head around what exactly constitutes an '溢出'對2個單精度浮點輸入的總和 .

最初,我的印象是,如果我試圖將任何正值添加到可以用IEEE-754表示法表示的最大值,結果將產生溢出異常 .

例如,假設我有:

a = 0x7f7fffff (ie. 3.4028235..E38);

b = 0x3f800000 (ie. 1.0)

我期望將這兩個值相加會導致IEEE-754中定義的溢出 . 令我最初的驚訝,結果只返回'a'的值,沒有標記異常 .

所以我想,因為精確度(或者你喜歡的分辨率)隨著所表示的值的增加而減小,所以在這種情況下,值“1”可能由于其相對不重要而有效地向下舍入到0 .

So that begged the question: 在這種情況下,'b'的最小值會導致溢出異常嗎?它取決于IEEE-754的具體實現嗎?

也許就像我不了解如何在這種特殊情況下確定最小“重要”精度一樣簡單,但是考慮到下面的代碼,為什么第二個和會導致溢出而不是第一個?

static union sFloatConversion32

{

unsigned int unsigned32Value;

float floatValue;

} sFloatConversion32;

t_bool test_Float32_Addition(void)

{

float a;

float b;

float c;

sFloatConversion32.unsigned32Value = 0x7f7fffff;

a = sFloatConversion32.floatValue;

sFloatConversion32.unsigned32Value = 0x72ffffff;

b = sFloatConversion32.floatValue;

/* This sum returns (c = a) without overflow */

c = a + b;

sFloatConversion32.unsigned32Value = 0x73000000;

b = sFloatConversion32.floatValue;

/* This sum, however, causes an overflow exception */

c = a + b;

}

是否存在可以應用的通用規則,使得可以提前知道(即,不執行總和),給定兩個浮點數,它們的總和將導致IEEE-754定義的溢出?

總結

以上是生活随笔為你收集整理的Java忽略算术溢出,IEEE-754:“最小”溢出条件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。