位運算 簡析

2021-09-01 02:42:30 字數 916 閱讀 3567

位運算

在很多系統程式中常要求在位(bit)一級進行運算或處理,c語言提供了位運算的功能,使得c語言也能像組合語言一樣用來編寫系統程式,位運算共有 &  |  ^  ~  <<  >>  這六種。

1.1.1按位與運算

按位與運算」&」是雙目運算子。按位運算通常用來對某些位清0 或者 保留某些位,如把a的高8位清0,保留低8位,與作&255運算(255的二制數為0000000011111111)。參與運算的數以補碼形式出現。如9&5運算過程:

00001001

& 00000101

00000001 (結果為1)

1.1.2 按位或運算

按位或是雙目運算子。通常用來對某些數保留某些位,清0某些位,參與運算的兩個數以補碼出現。

1.1.3 按位異或運算

按位異或運算子 」 ^ 」 是雙目運算子,功能是參與運算的兩個數各對應的二進位相異或,當兩對應的二進位相異時,結果為1。參與運算的數以補碼出現,如9^5:

00001001

^  00000101

00001100 (結果是12)

1.1.4 求反運算

求反運算子 ~ 為單目運算子,具有結合性。其功能是對參與運算的數的各二進位按位求反。如~9:

~(0000000000001001)結果為:1111111111110110

1.1.5 左移運算

左移運算子 << 是雙目運算子。功能是高位丟棄,低位補0 。

1.1.6 右移運算

右移運算子 >> 是雙目運算子。功能是把 「>>」 左邊的運算數的各二進位全部右移若干位,」 >> 「 右邊的數指定移動的位數。

對於有負號數,在右移時,符號位將隨同移動。當為下數時,最高位補0,而為負數時,符號為1,最高位是補0或是補1取決於編譯系統的規定。turbo c和很多系統規定為補1。

TCP標誌位簡析

tcp標誌位簡析 tcp標誌位 urg 此標誌表示tcp包的緊急指標域 後面馬上就要說到 有效,用來保證tcp連線不被中斷,並且督促中間層裝置要盡快處理這些資料 ack 此標誌表示應答域有效,就是說前面所說的tcp應答號將會包含在tcp資料報中 有兩個取值 0和1,為1的時候表示應答域有效,反之為0...

簡談位運算

我們在平時抄題解做題時,常常會看到 之類的符號,這些看上去狂甩酷拽吊炸天的符號就是位運算。這裡我簡單說一下位運算符號。一 對於這個符號,大家更常見的雙 單 意為按位或,把參與運算的兩個數對應的二進位制位相與,只有對應的兩位都為 1 時,結果的對應為才為1,否則為0。如,9的二進位制位00001001...

驅動中位域操作簡析

在sm501的驅動中,暫存器非常多,每個暫存器位域的定義也特別多。驅動採用了一套非常奇妙的巨集來操作暫存器的位域。覺得有必要總結一下。1 相關定義 包括3 個方面 暫存器,暫存器位域,暫存器位域的可取值。其中,暫存器位域的表示用以0為起始索引的 高位 低位 來表示。這點非常重要,因為後面的巨集定義就...