国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

為什么Math.abs(Integr.MIN_VALUE)==Integer.MIN_VALUE

Ocean / 3043人閱讀

摘要:上面代碼的結果是,這跟我們希望的結果相反,為什么絕對值函數沒有得到正確結果呢,我們來看下源碼在的源碼中,對于負數直接使用了加上負號來取法,但是我們知道,因為存在,的范圍是,所以最小的數加上負號對應的其實超過了對應的最大整數范圍。

public class Test {        
    public static void main(String[] args) {
        int a=Integer.MIN_VALUE;
        System.out.println(Math.abs(a));
    }
}

上面代碼的結果是true,這跟我們希望的結果相反,為什么絕對值函數沒有得到正確結果呢,我們來看下源碼

public static int abs(int a) {
        return (a < 0) ? -a : a;
    }

在abs的源碼中,對于負數直接使用了加上負號來取法,但是我們知道,因為存在0,int的范圍是[-2^31,2^31-1],

所以最小的數-2^31加上負號對應的2^31其實超過了int對應的最大整數范圍。我們再來從字節的角度分析一下,32位太長了

這里我用1字節意思一下,數字在計算機內用補碼表示

127: 0111 1111

-128: 1000 0000

按照加負號的取反過程,回顧一下組原的知識,負數取反是先所有位取反(包括符號為),再+1

也就是0111 111再+1,于是有1000 0000,這樣原因和過程就一目了然了

擴展:從上面的字節表示我們還可以看出Integer.MAX_VALUE+1=Integer.MIN_VALUE

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/73220.html

相關文章

  • [LintCode] Divide Two Integers

    摘要:首先,分析溢出條件,設置符號位,然后取絕對值運算。原理如下,被除數,除數,設等于。如,,,所以商里必定有一個的次方存入,然后。然后被除數減去,繼續。此時,,循環結束。再舉一個例子看得懂的版本綜合一下 Problem Divide two integers without using multiplication, division and mod operator. If it is ...

    NervosNetwork 評論0 收藏0
  • [Leetcode] Divide Two Integers 整數整除

    摘要:位操作法復雜度時間空間思路我們設想,本來應該的得到余,那么如果我們把忽略余數后分解一下,,也就是,也就是把商分解為,所以商的二進制是。我們可以不斷的將乘的一次方,二次方,等等,直到找到最大那個次方,在這里是的四次方。 Divide Two Integers Divide two integers without using multiplication, division and m...

    張春雷 評論0 收藏0
  • [LeetCode] 29. Divide Two Integers

    Problem Given two integers dividend and divisor, divide two integers without using multiplication, division and mod operator. Return the quotient after dividing dividend by divisor. The integer divisi...

    fai1017 評論0 收藏0
  • leetcode 29 Divide Two Integers

    摘要:很容易想到,我們每次用被除數減去除數,進行減法的次數就是最終結果。這道題的采取了一種類似二分查找的思想。除了這些,這道題還要注意一些邊界情況的判斷,例如除數或被除數為,值溢出等。 題目詳情 Divide two integers without using multiplication, division and mod operator.If it is overflow, retu...

    馬龍駒 評論0 收藏0
  • [LintCode] Binary Representation

    摘要:細節上還要考慮正負號和整數位的越界情況。然后在循環內判斷,如果有重復出現的,或者中小數部分的長度超過,就說明該小數無法完全轉換。如果之前的正負號為,就在左邊加上負號。 Problem Given a (decimal - e.g. 3.72) number that is passed in as a string, return the binary representation t...

    you_De 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<