day2作业:
1.下列四组数,依次为二进制、八进制和十六进制,符合要求的是(d)
a. 12, 77, 10
b. 12, 80, 10
c. 11, 78, 19
d. 11, 77, 19
2.二进制数加法运算的基本特点是“逢二进一”,即0+0=0,0+1=1,1+0=1,1+1=0并进位。运用这一基本法则和十进制运算的类似规律,得出二进制数加法运算1001+101的结果为(c)
a. 1001
b. 1010
c. 1110
d. 1101
3.八进制754中的数码7对应的位权是(c)
a. 10^2 b. 16^1 c. 8^2 d. 2^2
4.十进制数53转换成二进制数是(b)
a. 100101
b. 110101
c.100100
d.110100
32 16 4 1
110101
5.已知,十进制中的8在X进制中表示为11,即(10)8=(X)11。请问这个X进制具体为(b)进制
a. 6
b. 7
c. 8
d. 9
x ^ 1 + 1 = 8
x = 7
6.二进制的1000001相当十进制的④,二进制的100.001可以表示为④_。
A: ① 62 ② 63 ③ 64 ④ 65
B: ① 2^3 + 2^–3 ② 2^2 + 2^–2 ③ 2^3 + 2^–2 ④ 2^2 + 2^–3
2 ^ 6 + 2 ^ 0
2 ^ 2 + 2 ^ -3
7. n = 6784,以下能够获取到7 的方法有(cd)
a. n / 1000 % 100
b. n % 1000 / 100
c. n // 100 % 10
d. n // 10 % 100 // 10
8.以下表达式 10 / 4 + 23 // 4 * 2 - 30的计算结果是:-17.5。
2.5 + 5 * 2 - 30
2.5 + 10 - 30
-17.5
9.写出计算机底层计算-10-20的步骤(补码计算和转换过程)
仅表示低八位运算
-10:(原码)10001010 —> (补码) 11110110
-20:(原码)10010100 —> (补码) 11101100
-10 - 20 = -10 + (-20) = 11110110 + 11101100 = 11100010(补码) —> (原码) 10011110 = -30
10.写代码获取数字n=1234中每一位上的数
def get_num(n):
"""获取数字n中每一位上的数"""
num = []
while n != 0:
n_len = int(math.log10(n) + 1)
num += [int(n // math.pow(10, n_len - 1))]
n = n % math.pow(10, n_len - 1)
print(num)
def get_num2(n):
"""获取数字n中每一位上的数"""
num = []
n_len = int(math.log10(n) + 1)
for i in range(n_len - 1, -1, -1):
num += [int(n // math.pow(10, i))]
n = n % math.pow(10, i)
print(num)
if __name__ == '__main__':
get_num(1234)
get_num2(1234)
11.写代码统计一个任意整数m是几位数,并且逆序打印出每一位数字。(0基础不做, 不能用字符串来做)
例如: m=123, 打印: m是3位数 3 2 1
m=45321, 打印:m是5位数 1 2 3 5 4
def reverse_num(m):
"""统计一个任意整数m是几位数,并且逆序打印出每一位数字"""
m_len = int(math.log10(m) + 1)
num = []
for i in range(m_len):
num += [m % 10]
m = m // 10
print('m是%d位数' % m_len, num)
if __name__ == '__main__':
reverse_num(45321)