二進位制題一般出現在數字計算題,某些奇怪的問題常常用二進位制操作符能快速解決。
二進位制運算子
名稱含義示例&
與操作只有當對應位全為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 我知道的部分常...