位運算案例

2021-08-19 21:08:39 字數 1246 閱讀 7959

###概述:

在二進位制計算中,最常見的就是位運算了。而位運算也經常出現在各位大神的原始碼當中,在研讀了snowflake演算法以後。

本篇持續更新!!

###基本運算,定死乙個值為max(8位demo):

最大值: 1111 1111 最小值 0000 0000

設x = max , y < x 則有下列規律可言

與運算:(同時為1則結果為1,有乙個不為1則結果為0)

1111 1111 & y = y

當y>x的時候,y&x = res, res小於y和x的最小值。

或運算:(有乙個為1,則結果為1)

1111 1111 | y = 1111 1111

異或運算:(相同為0,不同為1)

1111 1111 ^ y = ~ y (非運算)

非運算結合與運算

~x & x = 同等位數最小值

非運算結合或運算

~x | x = 同等位數最大值

非運算結合異或運算(和非運算結合或運算具有同等效應)

~x ^ x = 同等位數最大值

###左移表示max

有x位二進位制數,則最大的表示演算法用位運算為

max = (1 << x) - 1

max = (-1 << x) ^ -1

以上這種寫法,第二種計算更精,因為邏輯運算子,位運算子要高於算數運算子,

在計算機中,負數是以補碼的形式存在的哦,可以嘗試一下,很有意思

###原碼,反碼,補碼|以1為值,8位二進位制數舉例

原碼為直接轉換: 0000 0001

反碼為原碼的轉換,1為0,0為1: 1111 1110

補碼為反碼+1,結果為: 1111 1111

###未完待續…

-進製轉換

-進製為底數,所在位置為冪次方,以我們常用的十進位制相加的和為任何進製與十進位制的轉換

9999 = 9x10的0次方+9x10的1次方+n = 十進位制數

-snowflake演算法

PHP之mysql位運算案例講解

位運算,賦值狀態時異或對應位數1的整形,判斷狀態則與運算對應位數1的整形。最大用處就是同時判斷32位狀態,節省儲存空間,便於擴充套件,如果你不知道什麼是位運算的話,那麼請你先去看看基礎的c語言教程吧。與運算 a b 或運算 a b 異或運算 a b 或者你也可以將 與運算理解為 法 例如1 2 3 ...

筆試中常見的位運算案例分析

參考博文 輸入乙個數字,然後計算出它二進位制中 1 的個數。此方法相對於使用自帶的string庫,把空間節約到了o 1 static int bitcount int n return count 獲取x中0到16位的低位值 x x 0xffff 獲取16 32位的值 x x 16 0xffff 求...

位運算(1) 初識位運算

前段時間數電課學了些進製轉換,還有與或非等邏輯運算,如今再來看看位運算,倒輕鬆了不少。很早就想寫些非總結性部落格了,奈何還是太懶。也也不知怎的突然又來了興致,趕忙寫下這篇部落格。廢話不多說,今天準備總結總結關於位運算的知識。程式中的所有數在計算機記憶體中都是以二進位制的形式儲存的,即0 1兩種狀態,...