位運算(1) 初識位運算

2021-10-04 02:11:10 字數 1409 閱讀 5162

前段時間數電課學了些進製轉換,還有與或非等邏輯運算,如今再來看看位運算,倒輕鬆了不少。

很早就想寫些非總結性部落格了,奈何還是太懶。也也不知怎的突然又來了興致,趕忙寫下這篇部落格。

廢話不多說,今天準備總結總結關於位運算的知識。

程式中的所有數在計算機記憶體中都是以二進位制的形式儲存的,即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...