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

資訊專欄INFORMATION COLUMN

java位運(yùn)算和字節(jié)編碼(二)

jerry / 378人閱讀

摘要:雖然發(fā)生了符號位擴(kuò)展,但是沒有任何問題。這就是計算機(jī)中原碼和補(bǔ)碼的奧秘之處。不過等你看懂了就會發(fā)現(xiàn)位運(yùn)算的巧妙之處。這個函數(shù)的作用呢其實就是計算整形變量高位連續(xù)為零的個數(shù)。比如時二進(jìn)制補(bǔ)碼就是原碼也就是,那么得到的結(jié)果應(yīng)該是。

上一篇文章我們討論到byte強(qiáng)制轉(zhuǎn)換成int。然后拋出了一個問題,就是byte直接強(qiáng)制轉(zhuǎn)換成int一定會沒問題嗎?還是因為上面我們推導(dǎo)的那個例子只是個特例。好吧,正式回答下,一定是沒有問題的。雖然發(fā)生了符號位擴(kuò)展,但是沒有任何問題。這就是計算機(jī)中原碼和補(bǔ)碼的奧秘之處。

我們來看下JDK中Integer類中的靜態(tài)方法numberOfLeadingZeros

   public static int numberOfLeadingZeros(int i) {
        // HD, Figure 5-6
        if (i == 0)
            return 32;
        int n = 1;
        if (i >>> 16 == 0) { n += 16; i <<= 16; }
        if (i >>> 24 == 0) { n +=  8; i <<=  8; }
        if (i >>> 28 == 0) { n +=  4; i <<=  4; }
        if (i >>> 30 == 0) { n +=  2; i <<=  2; }
        n -= i >>> 31;
        return n;
    }

乍一看,啥跟啥。完全看不懂。不過等你看懂了就會發(fā)現(xiàn)位運(yùn)算的巧妙之處。這個函數(shù)的作用呢其實就是計算整形變量i高位連續(xù)為零的個數(shù)。比如 i = 1 時 二進(jìn)制補(bǔ)碼就是原碼也就是 00000000 00000000 00000000 00000001,那么得到的結(jié)果應(yīng)該是31。這個函數(shù)本身有什么用呢,自己去猜吧。好吧,不賣光子了,比如你想知道一個int整形的比1021這個整數(shù)更大而且屬于2的次方冪。
1 << (32 - (Integer.numberOfLeadingZeros(i - 1))),得到的結(jié)果應(yīng)該是1024。

未完待續(xù) ...
原文鏈接:http://segmentfault.com/a/1190000003826303

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

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

相關(guān)文章

  • java運(yùn)算字節(jié)編碼(一)

    摘要:正數(shù)的原碼,反碼和補(bǔ)碼相同。變量原碼反碼是符號位不變,其他位取反反碼補(bǔ)碼則是在反碼的基礎(chǔ)上加補(bǔ)碼所以在計算機(jī)中正確的表示應(yīng)該是。原碼反碼補(bǔ)碼此刻開始轉(zhuǎn)換為類型,占個字節(jié),符號位,用填充高位三個字節(jié)。 我們都知道計算機(jī)存儲的是二進(jìn)制,長度是8個比特。 byte b = 10; int i = -10; long l = 10L; 那么以上幾個變量如何用二進(jìn)制表示呢?很多人第一印象肯定是 ...

    Dongjie_Liu 評論0 收藏0
  • Java編程基礎(chǔ)02——Java語言基礎(chǔ)

    摘要:所以就想把一大串縮短點,將二進(jìn)制中的三位用一位表示。以可以大寫也可以小寫開頭版本可以表示二進(jìn)制了八進(jìn)制的數(shù)據(jù)表現(xiàn)形式由組成。結(jié)果把系數(shù)基數(shù)的權(quán)次冪相加即可。因為語言采用的是碼來編碼的。 1_(常量的概述和使用)* A:什么是常量(constant) 在程序執(zhí)行的過程中其值不可以發(fā)生改變 B:Java中常量的分類 字面值常量 自定義常量(面向?qū)ο蟛糠种v) C:字面值常量的...

    pakolagij 評論0 收藏0
  • Java各種數(shù)據(jù)類型,自己學(xué)習(xí)寫的筆記!?。?/b>

    摘要:局部變量聲明在函數(shù)內(nèi)部的變量。在作用域范圍內(nèi)不能出現(xiàn)命名沖突。 java編程規(guī)范: 1.良好的標(biāo)識符的命名 保留字不能作為標(biāo)識符命名: class、public、static..., goto,const 區(qū)分大小寫:helloWorld、HelloWorld 2.良好的注釋習(xí)慣 3.良好的縮進(jìn):沒遇到一個代碼塊縮進(jìn)一次(一個tab鍵) 變量:代...

    stefanieliang 評論0 收藏0
  • killBase系列 -- 密碼學(xué)(一)

    摘要:系列密碼學(xué)二傳送門密碼學(xué)一基礎(chǔ)密碼學(xué)算法分類消息編碼消息摘要類,類,對稱密碼非對稱密碼數(shù)字簽名五元組明文原始信息。非對稱密碼包提供給,,等非對稱加密算法。對稱加密算法在分布式網(wǎng)絡(luò)系統(tǒng)上使用較為困難,主要是因為密鑰管理困難,使用成本較高。 前言 最近一場面試,面試官問了我 對稱加密與非對稱加密的問題,雖然曾經(jīng)看過一些內(nèi)容,但是沒有系統(tǒng)的整理,所以當(dāng)被問的時候,腦子里一片空白,沒有回答上...

    tomato 評論0 收藏0
  • Java基礎(chǔ)語法知識你真的都會嗎?

    摘要:而所有的數(shù)據(jù)運(yùn)算都是采用補(bǔ)碼進(jìn)行的。補(bǔ)碼解決負(fù)數(shù)加法運(yùn)算正負(fù)零問題,彌補(bǔ)了反碼的不足。通過使用訪問修飾符可以使實例變量對子類可見暫時在學(xué)習(xí)基礎(chǔ)語法知識的時候可以暫時忽略實例變量這部分內(nèi)容,這部分內(nèi)容主要被使用在面向?qū)ο蟮牟糠?,但是極其重要。 showImg(https://segmentfault.com/img/remote/1460000019264541?w=600&h=242)...

    DirtyMind 評論0 收藏0

發(fā)表評論

0條評論

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