Java I/O : Bit Operation 位元運算

來源:互聯網
上載者:User

標籤:

Writer      :BYSocket(泥沙磚瓦漿木匠)

微         博:BYSocket

豆         瓣:BYSocket

FaceBook:BYSocket

Twitter    :BYSocket

泥瓦匠喜歡Java,文章總是扯扯Java。 I/O 基礎,就是二進位,也就是Bit

一、Bit與二進位

什麼是Bit(位)呢?位是CPU處理或者資料存放區最小的單元。類似於很小很小的開關,一開一關,表示為1或者0。所以,這就是電腦處理任何資料的“細胞”,要謹記。

而二進位,只是計算界一種規範和約定,準確的說是一種數制。念叨著“逢二進一”,這其實是一種演算法。

二、位元運算

說完了前面兩點,泥瓦匠帶你走向位元運算的概念。數在記憶體中以二進位儲存。位元運算,也就是二進位運算,其實就是對數在記憶體的二進位直接操作的過程。這裡有人發問了,

Q:都是1+1,位元運算不見得結果不同吧。

A:這個問得好。位元運算在常見的情境下是凸顯不了好處的。而在特定下,一者計算方便,速度快,支援面廣。比如我舉幾個例子,可以利用位元運算判斷值的奇數偶數,還有某些特定的演算法比如壓縮,密碼編譯演算法嚴重依賴位演算法。二者其儲存位元組小,比如在檔案的許可權(讀,寫等)都是用位來表示的。

上面,用小對話形式和舉例一起說明了位元運算。下面開始實戰。

三、操作符實戰

一、位元運算與 & { 兩位全1,結果才為1 } 

作用

① 清零。如果特定段位需要清0,則其他段與各位為0 與運算即可。0xFF & … 可以使靠右8位的其他都清0

② 取一個數中的指定位。1010 1110 & 0xF 可以獲得 1010 1110的低4位。

二、位元運算或 | { 只要有個1,結果就為1 } 

作用:用於補1,哪裡需要1就補哪裡。

三、異或運算 ^{ 兩個響應位不同,則為1 }

作用: 特定位翻轉 1010 1110 ^ 0xF = 1010 0001

四、移位元運算 左移和右移

” < <” 左移:右邊空出的位上補0,左邊的位將從字頭擠掉,其值相當於乘2。

右移就不重複了。

這裡再增加一個解決上面泥瓦匠提到的怎麼判斷奇數偶數。

// Is it odd?(value & 0x1) > 0// Is it divisible by two (even)?(value & 0x1) == 0

 

四、總結

Bit 位雖小但是基石,滴水穿石。水滴-位,值得我們好好瞭解。這裡複雜的壓縮演算法這些,以後寫到演算法再說。

要點:

概念

操作符運算

Writer      :BYSocket(泥沙磚瓦漿木匠)

微         博:BYSocket

豆         瓣:BYSocket

FaceBook:BYSocket

Twitter    :BYSocket


Java I/O : Bit Operation 位元運算

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.