前段時間數電課學了些進製轉換,還有與或非等邏輯運算,如今再來看看位運算,倒輕鬆了不少。
很早就想寫些非總結性部落格了,奈何還是太懶。也也不知怎的突然又來了興致,趕忙寫下這篇部落格。
廢話不多說,今天準備總結總結關於位運算的知識。
程式中的所有數在計算機記憶體中都是以二進位制的形式儲存的,即0、1兩種狀態,而位運算就是直接對整數在記憶體中的二進位制位進行操作。
十進位制轉二進位制
方法:十進位制數除2取餘法,即十進位制數除2,餘數為權位上的數,得到的商值繼續除2,依此步驟繼續向下運算直到商為0為止。例如:
二進位制轉十進位制
方法:把二進位制數按權展開、相加即得十進位制數。例如:
二進位制與八進位制間的轉換
二進位制與十六進製制之間的轉換
與 &該運算通常用於二進位制的取位操作。例如乙個數and 1 的結果就是取二進位制的最末位,由此可以判斷乙個整數的奇偶,二進位制數的最末位為0表示該數為偶數,最末位為1表示該數為奇數。
相同位的兩個數字都為1,則為1;若有乙個不為1,則為0。
例:1111 1100 & 0011 1111 =>0011 1100
或 |乙個數or 1的結果就是把二進位制數的最末位強行變成1,如果需要將其變成0,只需在or1後再減去1就ok。
相同位只要有乙個為1即為1。
例如:1011 0010 | 0101 1110 => 1111 1110
異或^其逆運算是它本身,即兩次異或同乙個數最後結果不變。
相同位不同則為1,相同位相同位則為0。
例:0001 0100 ^ 0000 0101 => 0001 0001
下面是在網上所見的相關規律講解圖:
非(取反) ~
將0和1全部取反。
例如:~0000 1111 => 1111 0000
按位左移 << 按位右移 >>
將二進位制數進行左移或右移操作。
無符號右移 >>>
忽略符號位,空位都以0補齊。
沒有 <<<
LeetCode 位運算 位1的個數
編寫乙個函式,輸入是乙個無符號整數,返回其二進位制表示式中數字位數為 1 的個數 也被稱為漢明重量 示例 輸入 00000000000000000000000000001011 輸出 3 解釋 輸入的二進位制串 00000000000000000000000000001011 中,共有三位為 1 輸...
位運算子和位運算
一 按位與 運算子 1 運算規則 參加運算的兩個 資料,按二進位進行 與 運算,如果兩個相應的二進位都為1,則該位的結果值為1,否則為0,即 0 0 0,0 1 0,1 0 0,1 1 1.2 用途 1 清零 運算物件 原來的數中為1的位,新數中相應位為0。2 取乙個數中某些指定位。如想要取乙個整數...
位運算子與位運算
位運算是對二進位制位的操作,它應用於整形資料,把整形資料看成固定的二進位制序列,然後對二進位制序列進行位運算 按位與運算 按位與運算子 是雙目運算子。其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1 否則為0。參與運算的數以補碼方式出現。例c a b a 1010...