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

資訊專欄INFORMATION COLUMN

Java位運算符淺析

zhaofeihao / 1074人閱讀

摘要:在學(xué)習(xí)源碼中,發(fā)現(xiàn)有大量使用位運算符,這樣做的目的是為了節(jié)約內(nèi)存開銷和加快計算效率。位運算符,這個位代表這什么位二進制位簡稱位,是二進制記數(shù)系統(tǒng)中表示小于的整數(shù)的符號,一般用或表示,是具有相等概率的兩種狀態(tài)中的一種。

在學(xué)習(xí)源碼中,發(fā)現(xiàn)有大量使用位運算符,這樣做的目的是為了節(jié)約內(nèi)存開銷和加快計算效率。

位運算符,這個”位”代表這什么?

位:二進制位簡稱“位”,是二進制記數(shù)系統(tǒng)中表示小于2的整數(shù)的符號,一般用1或 0表示,是具有相等概率的兩種狀態(tài)中的一種。二進制位的位數(shù)可表示一個機器字的字長,一個二進制位包含的信息量稱為一比特。摘自百度百科

int類型占4個字節(jié)(byte);

一個字節(jié)=8bit(位);

一個int類型的數(shù)值占32bit(位)

int i = 123;?
10進制123轉(zhuǎn)為二進制后等于:1111011?
完整補位后:00000000 00000000 00000000 01111011

二進制的最高位為符號位,1代表負數(shù),0代表正數(shù),其余位表示數(shù)的絕對值

123轉(zhuǎn)為二進制補齊后為:00000000 00000000 00000000 01111011,這是123的原碼。?
負數(shù)的原碼按照絕對值轉(zhuǎn)為二進制后,最高位補1。?
-123的原碼:10000000 00000000 00000000 01111011

反碼:正數(shù)的反碼和原碼相同,負數(shù)的反碼為原碼除最高位外取反(0變1,1變0)。

補碼:正數(shù)的反碼和原碼相同,負數(shù)的補碼為原碼除最高位外取反+1。

123的原碼:00000000 00000000 00000000 01111011?
123的反碼:00000000 00000000 00000000 01111011?
123的補碼:00000000 00000000 00000000 01111011

-123的原碼:10000000 00000000 00000000 01111011?
-123的反碼:11111111 11111111 11111111 10000100?
-123的補碼:11111111 11111111 11111111 10000101

已知補碼求解碼?
最高位如果是1的話(負數(shù)),那么除了最高位之外的取反,然后加1得原碼。

最高位如果是0的話,不變,正數(shù)的補碼就是他的原碼。摘自

在計算機系統(tǒng)中,數(shù)值一律用補碼來表示和存儲。原因在于,使用補碼,可以將符號位和數(shù)值域統(tǒng)一處理;同時,加法和減法也可以統(tǒng)一處理。此外,補碼與原碼相互轉(zhuǎn)換,其運算過程是相同的,不需要額外的硬件電路。?摘自百度百科

打個比方:2-1是怎么計算的?

2-1=2+(-1);?
2的補碼: 00000010?
-1的補碼:11111111?
結(jié)果0 00000001,最高位溢出丟棄2-1 = 1。?
有關(guān)原碼反碼補碼學(xué)習(xí)討論可以參考:?
原碼、反碼、補碼的產(chǎn)生、應(yīng)用以及優(yōu)缺點有哪些??
原碼, 反碼, 補碼 詳解

& 按位與

舉個例子:?

log:i2=0;

&比較的是boolean表達式時,右邊表達式的執(zhí)行不受左邊結(jié)果影響,所以當i<8不成立后,還是會執(zhí)行i2++。結(jié)果i2=0,i<8不成立if語句里面代碼未能執(zhí)行。

&比較的是數(shù)值時,相對應(yīng)位都是1,則結(jié)果為1否則為0。?

21&-1 = 21;?
正數(shù)補碼和原碼相同所以不必再轉(zhuǎn)換。負數(shù)需除最高位取反后+1得原碼。

| 按位或

按上面的例子,比較boolean表達式時左右兩邊都會執(zhí)行,有一個為真則真。?

| 比較數(shù)值時,相對應(yīng)位都是0則結(jié)果為0,否則為1。?

-21|-1 = -1;

^ 按位異或

相對應(yīng)位值相同則結(jié)果為0,否則為1?

-21^-1 = 20;

~ 按位取反

~位運算符將每一位取反?

~21 = -22;?

~-22 = 21;

移位運算

“有符號”左移<< 符號擴展機制值為正,則在高位補0,如果值為負,則在高位補1?

22<<3 = 176;

“有符號”右移>>?

-22>>4 = -2;

“無符號”右移>>>采用0擴展機制無論值的正負,都在高位補0?

-22>>>4 = 268435454;

閱讀更多

來自Google大佬的幾點寫簡歷的意見

Java高級進階,你必須要掌握這些數(shù)據(jù)結(jié)構(gòu)

除了敲代碼,你還有什么副業(yè)嗎?

我就死磕安卓了,怎么了?

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

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

相關(guān)文章

  • java淺析

    摘要:左移運算符首先我們將化為源碼因為其是類型,所以化為二進制有位正數(shù)的補碼和反碼等于源碼的本身。左移運算符是將操作數(shù)的二進制碼整理左移指定位數(shù),左移后右面空出的位用來補充。補充如果操作類型低于類型,比如,等,先將其轉(zhuǎn)化為類型在進行移位。 java移位符初步使用與簡單理解 概述 java移位符主要包括3種: 運算符 名稱 >> 左移運算符 3); } } 結(jié)果如下: ...

    blankyao 評論0 收藏0
  • GC(@廣告出售)垃圾回收機制: 淺析與理解

    摘要:廣告位出售垃圾回收機制淺析與理解對垃圾回收進行分析前,我們先來了解一些基本概念基本概念內(nèi)存管理內(nèi)存管理對于編程語言至關(guān)重要。里面的變量通常是局部變量函數(shù)參數(shù)等。 GC(@廣告位出售)垃圾回收機制: 淺析與理解 對垃圾回收進行分析前,我們先來了解一些基本概念 基本概念 內(nèi)存管理:內(nèi)存管理對于編程語言至關(guān)重要。匯編允許你操作所有東西,或者說要求你必須全權(quán)處理所有細節(jié)更合適。C 語言中雖然...

    songjz 評論0 收藏0
  • GC(@廣告出售)垃圾回收機制: 淺析與理解

    摘要:廣告位出售垃圾回收機制淺析與理解對垃圾回收進行分析前,我們先來了解一些基本概念基本概念內(nèi)存管理內(nèi)存管理對于編程語言至關(guān)重要。里面的變量通常是局部變量函數(shù)參數(shù)等。 GC(@廣告位出售)垃圾回收機制: 淺析與理解 對垃圾回收進行分析前,我們先來了解一些基本概念 基本概念 內(nèi)存管理:內(nèi)存管理對于編程語言至關(guān)重要。匯編允許你操作所有東西,或者說要求你必須全權(quán)處理所有細節(jié)更合適。C 語言中雖然...

    xioqua 評論0 收藏0
  • 線程池原理淺析

    摘要:線程池主要解決兩個問題一是當執(zhí)行大量異步任務(wù)時線程池能夠提供很好的性能。二是線程池提供了一種資源限制和管理的手段,比如可以限制現(xiàn)成的個數(shù),動態(tài)新增線程等。該方法返回一個對象,可指定線程池線程數(shù)量。 什么是線程池? 為了避免頻繁重復(fù)的創(chuàng)建和銷毀線程,我們可以讓這些線程進行復(fù)用,在線程池中,總會有活躍的線程在占用,但是線程池中也會存在沒有占用的線程,這些線程處于空閑狀態(tài),當有任務(wù)的時候會從...

    未東興 評論0 收藏0
  • 淺析CAS操作與JAVA實現(xiàn)

    CAS Compare And Swap.比較并交換.java中的同步器就是基于CAS技術(shù)實現(xiàn)的,為什么它能保證操作的同步性呢?因為是原子操作的一種,所以可以在多線程環(huán)境下來實現(xiàn)數(shù)據(jù)的交換操作不被打斷. CAS的缺陷ABA問題: 第一個線程來讀取變量A時被掛起;第二個線程過來操作A,將A賦值為B之后,并重新賦值為A;線程二完成操作;此時,對于線程一來說,所看到變量A的值是沒有變化的,但是實際上變...

    haobowd 評論0 收藏0

發(fā)表評論

0條評論

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