位操作的理解

2021-07-11 09:42:45 字數 494 閱讀 1502

通過一道面試題的來講解

給定乙個整型變數a,寫兩段**,第乙個設定a的bit 3,第二個清除a 的bit 3。在以上兩個操作中,要保持其它位不變。

//*********0x1<<3表示將用十六進製制表示的數1往右移動3位,0x1換算成二進位制數字0001,往右移動3位之後變為1000,即十六進製制數0x8*******//

#define bit3 (0x1 << 3)

static int a;

void set_bit3(void) 

void clear_bit3(void) 

還需要注意兩點

1、我們這裡宣告的變數a是int型的,一般在32位的作業系統中是兩個位元組(每個位元組是8位),因此我們在用十六進製制表示1時,規範的寫法是0x0001(每一位換算成二進位制需要4位來表示),我們平常直接寫成0x1,這種寫法不規範,但系統會自動為我們補0,使得我們的寫法和我們宣告的相一致。

2、bit 3 表示第4位,和陣列類似,從bit 0表示第一位

理解java位操作符

最近的工作需要大量的採用位操作符的 其實專案本身沒有這樣的需求,不過現在我的職責是維護同事的 而這位同事的偏好是採用位操作,沒辦法學習了。無符號右移位操作符 在將bit串右移位時,從bit串的最左邊填充0,這和帶符號右移位操作符 不同。在將bit串右移位時,從bit串的最左邊填充原來最左邊的位。也就...

徹底理解java位操作符

無符號右移位操作符 在將bit串右移位時,從bit串的最左邊填充0,這和帶符號右移位操作符 不同。在將bit串右移位時,從bit串的最左邊填充原來最左邊的位。也就是說,bit串原來最左邊的位是符號位,如果為1,則在帶符號右移時最左邊始終填充1 如果為0,則在帶符號右移時最左邊始終填充0。移位操作符的...

32位和64位的理解

大家都知道現在流行的作業系統是32位和64位的,都知道32位作業系統能 認出 4g以內的記憶體而64位的 可以認出多記憶體 2的64次方byte 簡稱大b,還有一種是小b,1個byte由8個bit組成 但是為什麼會64位的能認到的記憶體就多呢?先看一下概念 32位和64位 cpu一次處理資料的能力是...