成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

476-數(shù)字的補(bǔ)數(shù)

Euphoria / 2706人閱讀

摘要:前言上一道關(guān)于位運算的題目數(shù)字的補(bǔ)數(shù),原題目如下給定一個正整數(shù),輸出它的補(bǔ)數(shù)。示例輸入輸出解釋的二進(jìn)制表示為沒有前導(dǎo)零位,其補(bǔ)數(shù)為。

前言

LeetCode上一道關(guān)于位運算的題目數(shù)字的補(bǔ)數(shù),原題目如下:

給定一個正整數(shù),輸出它的補(bǔ)數(shù)。補(bǔ)數(shù)是對該數(shù)的二進(jìn)制表示取反。
注意:

給定的整數(shù)保證在32位帶符號整數(shù)的范圍內(nèi)。

你可以假定二進(jìn)制數(shù)不包含前導(dǎo)零位。

示例 1:
輸入: 5
輸出: 2
解釋: 5的二進(jìn)制表示為101(沒有前導(dǎo)零位),其補(bǔ)數(shù)為010。所以你需要輸出2。

示例 2:
輸入: 1
輸出: 0
解釋: 1的二進(jìn)制表示為1(沒有前導(dǎo)零位),其補(bǔ)數(shù)為0。所以你需要輸出0。

解題思路

這道題目我解題的思路是先嘗試對某個數(shù)字取反,然后通過位運算把前導(dǎo)零位取反后的1變回0,以入?yún)?舉例:

對5(二進(jìn)制表示為101)取反,獲得11111111111111111111111111111010

要使11111111111111111111111111111010變成101,只需要讓

    11111111111111111111111111111010
 &  00000000000000000000000000000111
 ------------------------------------
    00000000000000000000000000000101     

&為與運算,那么此時的問題就是如何生成前32-3=29(前導(dǎo)零位的位數(shù),注意int應(yīng)該是31位的,但是這個還把符號位也算上了)個的0和3個1組成的二進(jìn)制數(shù)字了

00000000000000000000000000000111可以通過以下方式獲得~((~0)<<3),簡單來說就是

對0取反獲得全為1的二進(jìn)制制數(shù),即11111111111111111111111111111111

再左移3位(入?yún)⒌挠行粩?shù)),得到11111111111111111111111111111000

最后取反,得到00000000000000000000000000000111

其實就是使用逆推法來解題。

實現(xiàn)代碼
    /**
     * 數(shù)字的補(bǔ)數(shù)
     * @param num
     * @return
     */
    public int findComplement(int num) {
        //有效位數(shù)
        int offset=32-Integer.numberOfLeadingZeros(num);
        return (~num)&(~((~0)<           
               
                                           
                       
                 

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/76834.html

相關(guān)文章

  • <Principle Of Computer Organization>學(xué)習(xí)筆記——原碼

    摘要:將補(bǔ)數(shù)的概念用到計算機(jī)中,便出現(xiàn)了補(bǔ)碼這種機(jī)器數(shù)。通常,從原碼形式入手來求補(bǔ)碼。它與補(bǔ)碼的區(qū)別是末位少加一個,因此很容易從補(bǔ)碼的定義推出反碼的定義。若真值為純小數(shù),它的反碼形式為其中表示符號位。 一、原碼表示法 原碼表示法是一種最簡單的機(jī)器數(shù)表示法,其最高位為符號位,符號位為0時表示該數(shù)為正,符號位為1時表示該數(shù)為負(fù),數(shù)值部分與真值相同。若真值為純小數(shù),它的原碼形式為Xs,.X1X2X...

    OnlyMyRailgun 評論0 收藏0
  • <Principle Of Computer Organization>學(xué)習(xí)筆記——原碼

    摘要:將補(bǔ)數(shù)的概念用到計算機(jī)中,便出現(xiàn)了補(bǔ)碼這種機(jī)器數(shù)。通常,從原碼形式入手來求補(bǔ)碼。它與補(bǔ)碼的區(qū)別是末位少加一個,因此很容易從補(bǔ)碼的定義推出反碼的定義。若真值為純小數(shù),它的反碼形式為其中表示符號位。 一、原碼表示法 原碼表示法是一種最簡單的機(jī)器數(shù)表示法,其最高位為符號位,符號位為0時表示該數(shù)為正,符號位為1時表示該數(shù)為負(fù),數(shù)值部分與真值相同。若真值為純小數(shù),它的原碼形式為Xs,.X1X2X...

    hsluoyz 評論0 收藏0
  • Leetcode PHP題解--D24 476. Number Complement

    摘要:返回該數(shù)字即可。思路題目描述得已經(jīng)很清楚了。要注意對調(diào)的時候,不能直接對調(diào)。需要先把換成除之外的其他字符,最后再把他替換過來。因為會按順序逐個替換。替換完成之后,在用轉(zhuǎn)換成十進(jìn)制即可。最終代碼若覺得本文章對你有用,歡迎用愛發(fā)電資助。 476. Number Complement 題目鏈接 476. Number Complement 題目分析 給定一個數(shù)字,將他轉(zhuǎn)換成二進(jìn)制后,將0和1...

    phodal 評論0 收藏0
  • ESP8266-NodeMCU項目(四):將上一項目的空調(diào)控制接入小愛同學(xué)(Blinker_APP同

    摘要:錯開折騰經(jīng)歷文章目錄前言思路設(shè)備配置程序代碼小愛訓(xùn)練測試總結(jié)前言之前已經(jīng)進(jìn)行了項目二接入小愛同學(xué)以及項目三空調(diào)控制,接下來便是將二者合一,實現(xiàn)控制,溫濕度查看,以及小愛同學(xué)進(jìn)行簡單空調(diào)控制。 ...

    Loong_T 評論0 收藏0
  • ESP8266-NodeMCU項目(三):ESP8266-NodeMCU+Blinker+紅外模塊(

    摘要:紅外模塊接入板子后,可進(jìn)行以上操作,并接入,通過控制空調(diào)。材料清單板子紅外接收模塊紅外發(fā)射模塊線杜邦線左邊是紅外發(fā)射模塊,右邊是紅外接收模塊。 錯開の折騰經(jīng)歷:ES...

    luoyibu 評論0 收藏0

發(fā)表評論

0條評論

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