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

資訊專欄INFORMATION COLUMN

Java位運算符淺析

zhaofeihao / 1058人閱讀

摘要:在學習源碼中,發現有大量使用位運算符,這樣做的目的是為了節約內存開銷和加快計算效率。位運算符,這個位代表這什么位二進制位簡稱位,是二進制記數系統中表示小于的整數的符號,一般用或表示,是具有相等概率的兩種狀態中的一種。

在學習源碼中,發現有大量使用位運算符,這樣做的目的是為了節約內存開銷和加快計算效率。

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

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

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

一個字節=8bit(位);

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

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

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

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

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

補碼:正數的反碼和原碼相同,負數的補碼為原碼除最高位外取反+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的話(負數),那么除了最高位之外的取反,然后加1得原碼。

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

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

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

2-1=2+(-1);?
2的補碼: 00000010?
-1的補碼:11111111?
結果0 00000001,最高位溢出丟棄2-1 = 1。?
有關原碼反碼補碼學習討論可以參考:?
原碼、反碼、補碼的產生、應用以及優缺點有哪些??
原碼, 反碼, 補碼 詳解

& 按位與

舉個例子:?

log:i2=0;

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

&比較的是數值時,相對應位都是1,則結果為1否則為0。?

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

| 按位或

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

| 比較數值時,相對應位都是0則結果為0,否則為1。?

-21|-1 = -1;

^ 按位異或

相對應位值相同則結果為0,否則為1?

-21^-1 = 20;

~ 按位取反

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

~21 = -22;?

~-22 = 21;

移位運算

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

22<<3 = 176;

“有符號”右移>>?

-22>>4 = -2;

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

-22>>>4 = 268435454;

閱讀更多

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

Java高級進階,你必須要掌握這些數據結構

除了敲代碼,你還有什么副業嗎?

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

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

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

相關文章

  • java淺析

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

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

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

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

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

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

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

    未東興 評論0 收藏0
  • 淺析CAS操作與JAVA實現

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

    haobowd 評論0 收藏0

發表評論

0條評論

zhaofeihao

|高級講師

TA的文章

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