操作符之按位操作符

按位操作符
   按位操作符用來操作整數基本數據類型中的單個“比特”(bit),即二進制位。按位操作符會對兩個參數中對應的位執行布爾代數運算,並最終生成一個結果。
   按位操作符來源於C語言面向底層的操作,在這種操作中經常需要直接操縱硬件,設置硬件寄存器內的二進制位,Java的設計初衷是嵌入電視機機頂盒內,所以這種面向底層的操作仍被保留了下來。但是,人們可能不會過多地用到位操作符。
   如果兩個輸入位裏都是1,則按位“與”操作符(&)生成一個輸出位1;否則生成一個輸出位0.如果兩個輸入位裏只要有一個是1,則按位“或”操作符(|)生成一個輸出位1;只有在兩個輸入位都是0地情況下,它纔會生成一個輸出位0.如果輸入位地某一個是1,但不全都是1,那麼按位“異或”操作(^)生成一個輸出位1.按位“非”(~),也稱爲取反操作符,它屬於一元操作符,只對一個操作數進行操作(其他按位操作符是二元操作符)。按位“非”輸出與輸入位相反地值——若輸入0,則輸出1。
   按位操作符和邏輯操作符都使用了同樣地符號,因此我們能方便地記住他們地含義:由於位是非常小地,所以按位操作符僅使用了一個字符。
   按位操作符可與等號(=)聯合使用,一邊合併運算和賦值:&=、|=和^=都是合法地(由於“~”是一元操作符,所以不可與“=”聯合使用)。
   我們將布爾類型作爲一種單比特值對待,所以它多少有些獨特。我們可對它執行按位“與”、按位“或”和按位“異或”運算,但不能執行按位“非”(大概是爲了避免與邏輯NOT混淆)。對於布爾值,按位操作符具有與邏輯操作符相同地效果,只是他們不會中途“短路”。此外,針對布爾值進行地按位運算爲我們新增了一個“異或”邏輯操作符,它並未包括在“邏輯”操作符地列表中。在移位表達式中,不能使用布爾運算。
   在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章