攝影或3C

Python逐位元運算(bitwise operation),或or | , 且and & , 互斥或xor ^ , 反向~ ;位元左移 x < 效果同x*(2**y) ; 位元右移 x>>1 => 效果同x//2;x>>16效果同 x//(2**16)

逐位元運算

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

儲蓄保險王

儲蓄險是板主最喜愛的儲蓄工具,最喜愛的投資理財工具則是ETF,最喜愛的省錢工具則是信用卡