美文网首页
2019-01-02 作业

2019-01-02 作业

作者: 百而所思 | 来源:发表于2019-01-02 19:48 被阅读0次

    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 作业

          本文链接:https://www.haomeiwen.com/subject/lejtrqtx.html