逐位元運算

OR | : 其中一個是1,就是1
and & :兩個都是1,才是1
XOR ^ 簡單來說就是兩者相同為 0,不同為 1。
一正一反,一真一假(0 1 或1 0)
才是1(真),其他為0(假)
5^7=? 不要誤以為是5的7次方(5**7)

互斥或^的使用時機:
輸入的資料
不是Amplitude就是Phase
只有其中一個為真
不可能同時為真(假)
必為一真一假
assert (keyword==”Amp”) ^ (keyword==”Pha”),\
“資料不是Amplitude就是Phase,請確認輸入的資料”
IDLE:

~x = -x-1
位元左移<< (跟方向鍵類似,非 遠小於):

x<<y => 效果同x*(2**y)
左移16格:

#y才有左移16格
位元右移>>(跟方向鍵類似,非 遠大於):

x>>1 => 效果同x//2
IDLE驗證:

65538對2**16(65536)取商跟餘數:

#y才有對x右移,x還是原來的x
ndarray也可以做左移,右移:
import numpy as np
ary = np.array([61440, 71680, 81920])
ary_quotient = ary // (2**16)
print(ary_quotient)
ary_mod =ary % (2**16)
print(ary_mod)
print(“{:=^20s}”.format(“傳說中的分隔線”))
ary_right_shift = ary >> 16
print(ary_right_shift)
ary_left_shift = ary_right_shift<<16
ary_mod2 = ary-ary_left_shift
print(ary_mod2)

使用位元移位,
運算速度較//或%來得快

位元移位大約只要40%的時間:

封包:

濾波器:

濾掉x: &0
留下x: x&1
IDLE驗證:

5 | 7 是逐位元運算
結果=7 純屬巧合
int(A) | int(B),做逐位元運算,
結果沒有一定是A 或 B

or , and
bool(5) = True
bool(0以外的數字) = True

推薦hahow線上學習python: https://igrape.net/30afN



![Python: List[ pandas.Series ] 轉DataFrame技巧:正確理解row和column的關係,同 concat( List[ pandas.Series ], axis=1 ).T Python: List[ pandas.Series ] 轉DataFrame技巧:正確理解row和column的關係,同 concat( List[ pandas.Series ], axis=1 ).T](https://i1.wp.com/savingking.com.tw/wp-content/uploads/2025/04/20250422150133_0_1cfa94.png?quality=90&zoom=2&ssl=1&resize=350%2C233)






近期留言