2019-01-02 作业

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

i = int(input())
if i & 1 == 1:
    print('奇数', i)
else:
    print('偶数:', i)

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

0x13 转换为十进制: 1 * 16 ** 1 + 3 * 16 ** 0 = 19
转换为二进制: 10011
原码:0001 0011
反码:0001 0011
补码:0001 0011
0x17 转换为十进制 1 * 16 ** 1 + 7 * 16 ** 0 = 23
转换为二进制: 10111
原码:0001 0111
反码:0001 0111
补码:0001 0111
所以0001 0011 & 0001 0111 -> 0001 0011
这个的反码是:0110 1000,原码是:0001 0011,
转换为十进制是:1 * 2 ** 2 + 1 * 2 ** 2 + 1 * 2**0 = 19

3.若x=-20,y=3则x&y的结果是(0)

x = -20 ,转换为二进制:1001 0100
原码:1001 0100
反码:1110 1011
补码:1111 0100
y = 3 ,转换为二进制:0000 0011
原码:0000 0011
反码:0000 0011
补码:0000 0011
所以1111 0100 & 0000 0011 -> 0000 0000
因此这个的原码是0000 0000,转换为十进制为 0

4.表达式 -97 | 120 的运算结果是()

-97,转换为二进制:1110 0001
原码:1110 0001
反码:1001 1110
补码:1001 1111
120,转换为二进制:0111 1000
原码:0111 1000
反码:0111 1000
补码:0111 1000
所以1001 1111 | 0111 1000 -> 1111 1111
因此这个的原码是1000 0001,转换为十进制为-1

5.在位运算中,操作数每右移一位,其结果相当于(B)

A.操作数乘以2 B.操作数除以2

C.操作数除以4 D.操作数乘以4

6.设x 是一个整数(16位).若要通过x|y使x低度8位置1,高8位不变,则y的二进制数是(0000 0000 1111 1111 )

设x的二进制位: xxxx xxxx xxxx xxxx
由题知x | y的值为:xxxx xxxx 1111 1111
因此y的低八位为1111 1111,
因‘|’的特点有1为1,双0为0,可知高八位:0000 0000
综上:y的二进制数为 0000 0000 1111 1111

7.总结常用的位运算使用技巧(自己查自己,觉得好用记得住的)

你可能感兴趣的:(2019-01-02 作业)