知識總結 常用二進位制操作符

2021-10-03 05:29:12 字數 1450 閱讀 2138

二進位制題一般出現在數字計算題,某些奇怪的問題常常用二進位制操作符能快速解決。

二進位制運算子

名稱含義示例&

與操作只有當對應位全為1時結果為1。

作用於兩個二進位制數。

對整型資料進行操作時,兩邊為整型資料會自動轉化為二進位制數,輸出結果還是十進位制。

01011001 & 00101001 = 00001001

6 & 7 = 6

7 & 8 = 0

|或操作 

只有當兩個對應位都為0時結果位為0。

01011001 | 00101001 = 01111001

^異或操作

當兩個值在某一位上相同時結果位為0,不同結果為1。

如乙個是1乙個是0,結果位是1;兩個都為1或者0結果位是0。

01011001 ^ 00101001 = 01110000

~補操作

只對乙個二進位制資料進行操作。

對該數每一位取反。即1變為0,0變為1。

~01011001 = 10100110

>>

右移操作

對乙個值中的位右移某個特定數字的位數。

01011001 >> 2 = 0010110

-5 >> 1 = -3

-5 / 2 = -2

<<

左移操作

對乙個值中的位左移某個特定數字的位數。

01011001 << 2 = 01100100

在電腦程式中資料的位是可以操作的最小資料單位,理論上可以用「位運算」來完成所有的運算和操作。一般的位操作是用來控制硬體的,或者進行資料變換,靈活的位操作可以有效地提高程式執行的效率。

用法原寫法

位運算寫法

代替除法

int i;

i = 257 / 8;

int i;

i = 257 >> 3;

代替取模

int j;

j = 456 % 32;

int j;

j = 456 - (456 >> 4 << 4);

聯合多個bool值

bool read = true;

bool write = true;

bool execute = true;

int permission = 7;    // 111

相反數int a = 5;

a = -a;

int a = 5;

a = ~a + 1;

...1. leetcode 5323. sort integers by the number of 1 bits(第20場雙周賽的第1題)

計算乙個數在二進位制中1的位數。

2. leetcode 52. n-queensii

經典n皇后問題。

c++位運算子:

右移一位和除二:

位運算的效能優化:

位運算的好處:

C 二進位制操作符

c 中常用的二進位制運算子有六個,以下分別介紹 1.與操作.作用於兩個二進位制數,當然也可以對整型資料進行操作 當兩邊為整型資料會自動轉化為二進位制數 只有當對應位全為1時結果為1 01011001 00101001 結果為 00001001 2.或操作.和1的與操作類似.用來合併值.只有當兩個對應...

JAVA 學習 二進位制位操作符

按位與運算子 參加運算的兩個資料,按二進位制位進行 與 運算。運算規則 0 0 0 0 1 0 1 0 0 1 1 1 即 兩位同時為 1 結果才為 1 否則為0 例如 3 5 即 0000 0011 0000 0101 0000 0001 因此,3 5的值得1。另,負數按補碼形式參加按位與運算。i...

二進位制操作總結

對於二進位制我相信大部分讀者剛開始接觸一定是一臉蒙蔽,當初我也是,但是通過長時間的刷題,二進位制各種各樣的操作都有了一些接觸,我通過將每次刷題中有關於二進位制的操作全都總結起來,今天在學樹狀陣列時發現總結的還是有一點了,於是打算分享一下,畢竟這個神奇的二進位制還是挺讓人頭疼的。c c 我知道的部分常...