day3 作业

1.使用位运算判断一个数是否是奇数

注:奇数的二进制的最后一位是1,偶数是0

答案:使用按位 与 运算可以进行快速判断。二进制运算 “遇0为0为偶数,双1为1为奇数”
每一个数字二进制的位权可以表示:
a1*2^n+a2*2^(n-1)+...+an*2^1+a(n-1)*2^0.

参考代码:

a = int(input("输入任意数:"))
b = 1
c = a & b
print(c)
if c == 1:
    print("%s"%a+"是"+"奇数")
elif c == 0:
    print("%s" %a + "是" + "偶数数")

可以用 1&任意整数。如果结果是1,则表示该数尾项必+1,为奇数。如果结果是0,则表示该数尾项必+0,除尾项意外其余数均是2的整数倍,为偶数。

2.表达式0x13&0x17的值是( 19 )
答案:

十六进制的13二进制是:0001 0011
十六进制的17二进制是:0001 0111
0x13 & 0x17 :0001 0011
转换成十进制的值是 :19

1*2^4+1*2^1+1*2^0  =  19
3.若x=2,y=3则x&y的结果是( 2 )
答案:2的二进制是:0010
                 3的二进制是:0011
                   x&y            :0010
               转换成十进制:2
4.表达式 -97 | 120 的运算结果是( -1 )
答案:
-97的原码是:1 1100001(原码)
120的原码是:0 1111000(原码)

-97的原码是:1 1100001(原码)》10011110(反码)》10011111(补码)
120的补码是:0 1111 000(补码)
-97的补码是: 1 0011 111(补码)
  -97 | 120   :  1 1111 111(补码)>反码 1 1111 110 》1 000 001 (原码)
1 000 001 (原码):转成十进制 -1 
5.在位运算中,操作数每右移一位,其结果相当于( E)

A.操作数乘以2 B.操作数除以2
C.操作数除以4 D.操作数乘以4
E:操作数整除2

20   (20 >> 1)
10100 >> 2 = 0101 =5
0101 >> 1 = 010 = 2
010 >> 1 = 01= 1
01 >> 1 = 0 = 0
答案:E
6.设x 是一个整数(16位).若要通过x|y使x低度8位置1,高8位不变,则y的二进制数是( )
答案: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选项元组定义变量,必须前后变量数和后面赋值数的量一致。
c选项其中的 in 是一个保留字符。

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.以下表达式 10 / 4 + 23 // 4 * 2 - 30的计算结果是:-17.5
答案:-17.5
2.5 +5*2-30 = -17.5
10. 写代码获取输入数字12345中的每一位上的数字
答案:
法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. 写出判断一个数是否能同时被3和7整除的条件语句
答案:
num = int(input("随便一个数:"))
if num %3 ==0 and num %7 == 0:
    print("%s"%num+"能被3和7同时整除")
else:
    print("%s"%num+"不能被3和7同时整除")
12. 写出判断一个数是否能够被3或者7整除,但是不能同时被3和7整除的表达式
答案:
num = int(input("随便一个数:"))
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整除,但是不能同时被3和7整除")
else:
    print("...")

你可能感兴趣的:(day3 作业)