3.1 運(yùn)算符
(1)算術(shù)運(yùn)算符(對(duì)數(shù)字進(jìn)行科學(xué)運(yùn)算)
(2)比較運(yùn)算符(對(duì)兩個(gè)數(shù)值進(jìn)行大小比較)
(3)邏輯運(yùn)算符(對(duì)兩個(gè)數(shù)值進(jìn)行邏輯運(yùn)算毯焕,與或非的關(guān)系)
(4)賦值運(yùn)算符(簡(jiǎn)化運(yùn)算符讥耗,把賦值操作和算術(shù)操作進(jìn)行了結(jié)合)
以下三種運(yùn)算符是難點(diǎn)!
(5)成員運(yùn)算符(判斷字符串或者數(shù)字是否在我們的序列或集合中)
(6)身份運(yùn)算符(比較兩個(gè)對(duì)象是不是同一個(gè)對(duì)象修肠,是否指向了同一塊內(nèi)存的存儲(chǔ)區(qū)域)
(7)位運(yùn)算符(二進(jìn)制準(zhǔn)備的運(yùn)算符)
3.2 賦值運(yùn)算符
= 賦值
+= 加法賦值運(yùn)算符
-= 減法賦值運(yùn)算符
*= 乘法賦值運(yùn)算符
/= 除法賦值運(yùn)算符
%= 取模賦值運(yùn)算符
**= 冪賦值運(yùn)算符
//= 取整除賦值運(yùn)算符
3.3 成員運(yùn)算符與身份運(yùn)算符
(1)成員運(yùn)算符
in :在指定的序列中找到值返回True,否則返回False
not in :在指定的序列中沒有找到值返回True户盯,否則返回False
(2)身份運(yùn)算符
is :is是判斷兩個(gè)變量是不是引用自一個(gè)對(duì)象
is not :is not是判斷兩個(gè)變量是不是引用自不同對(duì)象
3.4 位運(yùn)算符
(1)位運(yùn)算符:
① & 按位與運(yùn)算符:符號(hào)兩邊可視為:將0看作false嵌施,1看作true
規(guī)則:0&0=0 0&1=0 1&0=0 1&1=1
② | 按位或運(yùn)算符:符號(hào)兩邊可視為:將0看作false,1看作true
規(guī)則:0|0=0 0|1=1 1|0=1 1|1=1
③ ^ 按位異或運(yùn)算符:符號(hào)兩邊兩者值相同莽鸭,結(jié)果值為0即false吗伤;兩者值不同,結(jié)果值才為1即true硫眨。
規(guī)則:0^0=0 1^0=1 1^1=0
④ ~ 按位取反運(yùn)算符
規(guī)則:~0=1 ~1=0
⑤ << 左移動(dòng)運(yùn)算符
規(guī)則:左移若干位足淆,右補(bǔ)0
⑥ >> 右移動(dòng)運(yùn)算符
規(guī)則:右移若干位,左補(bǔ)0
注意:
★二進(jìn)制數(shù)中礁阁,正數(shù)最左邊都是0巧号,負(fù)數(shù)最左邊都是1,這一位是符號(hào)位姥闭,右邊就是數(shù)值位丹鸿。
★左移<<時(shí),右邊產(chǎn)生的空缺用0填補(bǔ)棚品;右移>>時(shí)靠欢,填補(bǔ)內(nèi)容則根據(jù)原有的符號(hào)決定是0還是1。
★原碼:一個(gè)十進(jìn)制數(shù)的絕對(duì)值轉(zhuǎn)為二進(jìn)制得到數(shù)值位铜跑,在根據(jù)實(shí)際正負(fù)在最左側(cè)加一個(gè)符號(hào)位门怪,“1 ”(負(fù))或“0 ”(正),這個(gè)二進(jìn)制數(shù)稱為原碼锅纺。
★反碼:將一個(gè)二進(jìn)制數(shù)的數(shù)值位按位取反(~)掷空,符號(hào)位不變,得到新的二進(jìn)制數(shù)稱為反碼伞广。
★補(bǔ)碼:反碼加一得到的二進(jìn)制數(shù)稱為補(bǔ)碼拣帽。
★以上反碼補(bǔ)碼規(guī)則針對(duì)負(fù)數(shù),而對(duì)正數(shù)嚼锄,原反補(bǔ)相同减拭。負(fù)數(shù)在進(jìn)行計(jì)算時(shí),就是按以上規(guī)則在計(jì)算機(jī)內(nèi)先轉(zhuǎn)換為補(bǔ)碼后区丑,再參與程序代碼中的運(yùn)算拧粪。
a = 60 #60的二進(jìn)制為00111100
b = 13 #13的二進(jìn)制為00001101
c = 0
#從右向左修陡,1&0=0,0&0=0可霎,1&1=1魄鸦,0&1=0,所以c為00001100=12
c = a & b
print("a & b:", c)
#從右向左癣朗,1|0=1拾因,0|0=0,1|1=1旷余,0|1=1绢记,所以c為00111101=61
c = a | b
print("a | b:", c)
#從右向左,1^0=1正卧,0^0=0蠢熄,1^1=0,0^1=1炉旷,所以c為00110001=49
c = a ^ b
print("a ^ b:", c)
#從右向左,~0=1签孔,~1=0,所以c為11000011=195
#左側(cè)開頭如果為1的話窘行,需要對(duì)該值取反+1饥追,即-(~11000011+1)
#-(00111100+1)=-61
c = ~a
print("a:", c)
#a的二進(jìn)制為00111100
#<< 3之后為00111100000=480
c = a << 3
print("c:", c)
#a的二進(jìn)制為00111100
#>> 3之后為00000111100=7
c = a >> 3
print("c:", c)
(2)二進(jìn)制轉(zhuǎn)十進(jìn)制
二進(jìn)制:進(jìn)位規(guī)則-逢二進(jìn)一;借位規(guī)則-借一當(dāng)二
二進(jìn)制轉(zhuǎn)十進(jìn)制規(guī)則:從右到左用每位數(shù)乘以2的N次方(0開始)后累加
(3)十進(jìn)制轉(zhuǎn)二進(jìn)制
十進(jìn)制轉(zhuǎn)二進(jìn)制規(guī)則:用十進(jìn)制對(duì)2取余罐盔,將取余數(shù)放在二進(jìn)制的左側(cè)