and & (按位取與) 1 & 1 = 1 1 & 0 = 0 0 & 0 = 0 0 & 1 = 0
or | (按位取或) 1 | 1 = 1 1 | 0 = 1 0 | 0 = 0 0 | 1 = 0
xor ⊕/^ (按位異或) 1⊕1 = 0 1⊕0 = 1 0 ⊕0 = 0 0 ⊕1 = 0
lsh << (邏輯左移)將二進位制數向左移動x位造成二進位制數右邊不足用0補足,左邊高位溢位
rsh >> (邏輯右移)將二進位制數向右移動y位造成二進位制數左邊補足用0補足,右邊高位溢位
not ~ (按位取反) 每一位0變1,1變0
注意:二進位制操作的優先順序好像很低,所以進行計算時可以多打寫括號
反正又不會累死
讀取x的第pos個二進位制位: (x >> pos)& 1;
讀取x的第pos位開始的cnt位: (x >> pos)& ((1 << cnt) - 1);
將x的第pos位置為1: (1 << pos)| x;
將x的第pos位置為0: (~(1 << pos))& x;
將x的第pos位取反: (1 << pos) ⊕ x;
將x的末尾的1提取出來: x & (x ⊕ (x + 1));
二進位制中最低位的乙個1的位置: lowbit(x) = x & (-x);
遍歷二進位制中所有的1的位置: for(; x; x -= lowbit(x));
判斷乙個數的奇偶性: (x & 1) ? 偶數 : 奇數;
對2的冪取模 : x & ((1 << y) - 1)
列舉子集 for(int i = x; i ; i = (i & (i - 1));
二進位制 二進位制起源
現代通訊技術的基礎是二進位制編碼。早在1865年麥克斯韋總結出麥克斯韋方程組之前,美國人摩斯 morse 於1837年發明了摩斯電碼和有線電報。有線電報的出現,具有劃時代的意義 它讓人類獲得了一種全新的資訊傳遞方式,這種方式 看不見 摸不著 聽不到 完全不同於以往的信件 旗語 號角 烽火,這也是二進...
二進位制操作總結
對於二進位制我相信大部分讀者剛開始接觸一定是一臉蒙蔽,當初我也是,但是通過長時間的刷題,二進位制各種各樣的操作都有了一些接觸,我通過將每次刷題中有關於二進位制的操作全都總結起來,今天在學樹狀陣列時發現總結的還是有一點了,於是打算分享一下,畢竟這個神奇的二進位制還是挺讓人頭疼的。c c 我知道的部分常...
學習二進位制有感
二進位制,乙個曾經只是聽說過沒見過的東西,現在已經漸漸地走入了我們日常的學習生活。二進位制的學習過程既簡單又繁瑣,簡單的0和1卻能產生出無數種組合,進行各種各樣的轉換,這給初次接觸的我們帶來了不少麻煩。慢慢的,老師通過耐心的講解和一些有意思的小遊戲讓我們加深了對這些枯燥的概念的理解,其中一款csic...