Python_14_Codecademy_14_Introduction to Bitwise Operators

<a href="http://www.reibang.com/p/54870e9541fc">總目錄</a>


課程頁面:https://www.codecademy.com/
內(nèi)容包含課程筆記和自己的擴(kuò)展折騰


The Base 2 Number System

Python里篙贸,只要開始寫上0b, Python就會(huì)知道你之后輸入的是二進(jìn)制。但是即使是二進(jìn)制輸入,二進(jìn)制計(jì)算的默認(rèn)輸出還是十進(jìn)制糟红。

print 0b1,
print 0b10,
print 0b110,
print 0b111
print
print 0b1 + 0b11
print 0b11 * 0b11

Output:
1 2 6 7

4
9

The bin() function

bin()能讓輸出也是二進(jìn)制

print bin(6)
print bin(1)

0b110
0b1

int()'s Second Parameter

寫2就表示前面的是二進(jìn)制數(shù)字员魏,輸出還是十進(jìn)制

print int("110", 2)
print int("101", 2)
print int(bin(5),2)
print int("0b11001001", 2)

Output:
6
5
5
201

Left and right shift bitwise operators

# Left Bit Shift (<<)
0b000001 << 2 == 0b000100
0b000101 << 3 == 0b101000
# Right Bit Shift (>>) 
0b0010100 >> 3 == 0b000010
0b0000010 >> 2 == 0b000000

【練習(xí):把一個(gè)二進(jìn)制數(shù)的tenth digit from the right變成其相反的數(shù)字】

a = 0b101
mask = (0b1 << 9) #因?yàn)橛辛艘粋€(gè)1了吼肥,只要挪9位
print bin(mask)
print bin(a ^ mask)

Output:
0b1000000000
0b1000000101

The bitwise operators: AND(&), OR(|), XOR(^), NOT(~)

truth table: 1是true录平,0是false
AND(&)
t and t is true: 1 & 1 = 1
t and f is false: 1 & 0 = 0
f and t is false: 0 & 1 = 0
f and f is false: 0 & 0 = 0

OR(|)
t or t is true: 1 | 1 = 1
t or f is true: 1 | 0 = 1
f or t is true: 0 | 1 = 1
f or f is false: 0 | 0 = 0

XOR(^) (exclusive or)
t xor t is false: 1 ^ 1 = 0 # flip out
t xor f is true: 1 ^ 0 = 1
f xor t is true: 0 ^ 1 = 1 # flip out
f xor f is false: 0 ^ 0 = 0

NOT(~)

The bitwise NOT operator (~) just flips all of the bits in a single number. What this actually means to the computer is actually very complicated, so we're not going to get into it. Just know that mathematically, this is equivalent to adding one to the number and then making it negative.

print ~1
print ~2
print ~3
print ~42
print ~123

Output:
-2
-3
-4
-43
-124

Bit mask

A bit mask is just a variable that aids you with bitwise operations. A bit mask can help you turn specific bits on, turn others off, or just collect data from an integer about which bits are on or off.

【例1:看看一個(gè)二進(jìn)制數(shù)的第三位是不是on(即為true/1)】

def third_digit(num):
    mask = 0b00100
    desired = num & mask
"""
因?yàn)閙ask的第三位是on,所以如果num的第三位是off缀皱,
num&mask的第三位就會(huì)是off/0/false
mask的數(shù)值就變成了0斗这。
否則mask就不會(huì)變成0。
"""
    if desired > 0:
        return True
    else:
        return False
print third_digit(0b01100)

Output:
True

【例2:把一個(gè)二進(jìn)制數(shù)的第三位turn on】

def third_on(num):
    mask = 0b100
    desired = mask | num
    return bin(desired)
print third_on(0b10000)

【例3:翻轉(zhuǎn)(0變成1啤斗,1變成0)一個(gè)二進(jìn)制數(shù)的所有數(shù)字】

num = 0b1011011
mask = 0b1111111
print bin(num^mask)

Output:
0b100100

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末表箭,一起剝皮案震驚了整個(gè)濱河市筐乳,隨后出現(xiàn)的幾起案子比肄,更是在濱河造成了極大的恐慌,老刑警劉巖汗侵,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件崔拥,死亡現(xiàn)場離奇詭異极舔,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)握童,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進(jìn)店門姆怪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人澡绩,你說我怎么就攤上這事“掣剑” “怎么了肥卡?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長事镣。 經(jīng)常有香客問我步鉴,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任氛琢,我火速辦了婚禮喊递,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘阳似。我一直安慰自己骚勘,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布撮奏。 她就那樣靜靜地躺著俏讹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪畜吊。 梳的紋絲不亂的頭發(fā)上泽疆,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天,我揣著相機(jī)與錄音玲献,去河邊找鬼殉疼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛捌年,可吹牛的內(nèi)容都是我干的株依。 我是一名探鬼主播,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼延窜,長吁一口氣:“原來是場噩夢啊……” “哼恋腕!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起逆瑞,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤荠藤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后获高,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哈肖,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年念秧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了淤井。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,852評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡摊趾,死狀恐怖币狠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情砾层,我是刑警寧澤漩绵,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站肛炮,受9級特大地震影響止吐,放射性物質(zhì)發(fā)生泄漏宝踪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一碍扔、第九天 我趴在偏房一處隱蔽的房頂上張望瘩燥。 院中可真熱鬧,春花似錦不同、人聲如沸厉膀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽站蝠。三九已至,卻和暖如春卓鹿,著一層夾襖步出監(jiān)牢的瞬間菱魔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工吟孙, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留澜倦,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓杰妓,卻偏偏與公主長得像藻治,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子巷挥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內(nèi)容