1.使用位運(yùn)算判斷一個(gè)數(shù)是否是奇數(shù)
注:奇數(shù)的二進(jìn)制的最后一位是1媒佣,偶數(shù)是0
答案:使用按位 與 運(yùn)算可以進(jìn)行快速判斷。二進(jìn)制運(yùn)算 “遇0為0為偶數(shù)陵刹,雙1為1為奇數(shù)”
每一個(gè)數(shù)字二進(jìn)制的位權(quán)可以表示:
a1*2^n+a2*2^(n-1)+...+an*2^1+a(n-1)*2^0.
參考代碼:
a = int(input("輸入任意數(shù):"))
b = 1
c = a & b
print(c)
if c == 1:
print("%s"%a+"是"+"奇數(shù)")
elif c == 0:
print("%s" %a + "是" + "偶數(shù)數(shù)")
可以用 1&任意整數(shù)默伍。如果結(jié)果是1欢嘿,則表示該數(shù)尾項(xiàng)必+1,為奇數(shù)也糊。如果結(jié)果是0炼蹦,則表示該數(shù)尾項(xiàng)必+0,除尾項(xiàng)意外其余數(shù)均是2的整數(shù)倍狸剃,為偶數(shù)掐隐。
2.表達(dá)式0x13&0x17的值是( 19 )
答案:
十六進(jìn)制的13二進(jìn)制是:0001 0011
十六進(jìn)制的17二進(jìn)制是:0001 0111
0x13 & 0x17 :0001 0011
轉(zhuǎn)換成十進(jìn)制的值是 :19
1*2^4+1*2^1+1*2^0 = 19
3.若x=2,y=3則x&y的結(jié)果是( 2 )
答案:2的二進(jìn)制是:0010
3的二進(jìn)制是:0011
x&y :0010
轉(zhuǎn)換成十進(jìn)制:2
4.表達(dá)式 -97 | 120 的運(yùn)算結(jié)果是( -1 )
答案:
-97的原碼是:1 1100001(原碼)
120的原碼是:0 1111000(原碼)
-97的原碼是:1 1100001(原碼)》10011110(反碼)》10011111(補(bǔ)碼)
120的補(bǔ)碼是:0 1111 000(補(bǔ)碼)
-97的補(bǔ)碼是: 1 0011 111(補(bǔ)碼)
-97 | 120 : 1 1111 111(補(bǔ)碼)>反碼 1 1111 110 》1 000 001 (原碼)
1 000 001 (原碼):轉(zhuǎn)成十進(jìn)制 -1
5.在位運(yùn)算中,操作數(shù)每右移一位钞馁,其結(jié)果相當(dāng)于( E)
A.操作數(shù)乘以2 B.操作數(shù)除以2
C.操作數(shù)除以4 D.操作數(shù)乘以4
E:操作數(shù)整除2
20 (20 >> 1)
10100 >> 2 = 0101 =5
0101 >> 1 = 010 = 2
010 >> 1 = 01= 1
01 >> 1 = 0 = 0
答案:E
6.設(shè)x 是一個(gè)整數(shù)(16位).若要通過x|y使x低度8位置1虑省,高8位不變,則y的二進(jìn)制數(shù)是( )
答案:0b00000000 11111111
x = XXXXXXXX XXXXXXX
XXXXXXXX 11111111
7. 下面定義變量正確的是( a,d )
a. a = b = c = 10
b. a,c = 10
c. in = 20
d. num = 10; t = 20
答案:ad
b選項(xiàng)元組定義變量僧凰,必須前后變量數(shù)和后面賦值數(shù)的量一致探颈。
c選項(xiàng)其中的 in 是一個(gè)保留字符。
8. n = 6784训措,以下能夠獲取到7 的方法有( c d)
a. n / 1000 % 100
b. n % 1000 / 100
c. n // 100 % 10
d. n // 10 % 100 // 10
答案:
a:6784 / 1000 % 100=6.784 % 100 = 6.784
b:6784 % 1000 / 100 = 784/100 = 7.84
C:6784 // 100 % 10 = 67 % 10 = 7
D:6784 // 10 % 100 // 10 = 678 % 100 // 10 =78 // 10 =7
9.以下表達(dá)式 10 / 4 + 23 // 4 * 2 - 30的計(jì)算結(jié)果是:-17.5伪节。
答案:-17.5
2.5 +5*2-30 = -17.5
10. 寫代碼獲取輸入數(shù)字12345中的每一位上的數(shù)字
答案:
法1
a = 12345
b = a // 10000
c = a // 1000
d = c%10
e = a // 100
f = e%10
g = a//10
h = g%10
i = a%10
print(b,d,f,h,i)
a = 12345
b = str(a)
print(b)
print(b[0],b[1],b[2],b[3],b[4])
a = 12345
b = str(a)
i =0
c = []
while i <= 4:
c.append(int(b[i]))
i +=1
print(c)
11. 寫出判斷一個(gè)數(shù)是否能同時(shí)被3和7整除的條件語句
答案:
num = int(input("隨便一個(gè)數(shù):"))
if num %3 ==0 and num %7 == 0:
print("%s"%num+"能被3和7同時(shí)整除")
else:
print("%s"%num+"不能被3和7同時(shí)整除")
12. 寫出判斷一個(gè)數(shù)是否能夠被3或者7整除,但是不能同時(shí)被3和7整除的表達(dá)式
答案:
num = int(input("隨便一個(gè)數(shù):"))
a= (num %3 ==0 or num %7 == 0)and(not(num %3 ==0 and num%7 ==0))
if a == True:
print("%s"%num+"能夠被3或者7整除绩鸣,但是不能同時(shí)被3和7整除")
else:
print("...")