美文网首页
day7作业

day7作业

作者: 星龙断月 | 来源:发表于2019-01-02 20:35 被阅读0次

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

    num1 = input('请输入一个数:')
    if int(num1) & 1 == 0:
        print('%s不是奇数' % num1)
    elif int(num1) & 1 == 1:
        print('%s是奇数' % num1)
    

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

    # 0x是十六进制
    # 0x13 = 3* 16**0+1*16**1=3+16=19=010011(补)
    # 0x17 = 7* 16**0+1*16**1=7+16=23=010111(补)
    0x13 & 0x17=010011 & 010111 =010011=19
    
    

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

    x=-20  原码:110100 反码:101011  补码:101100
    y=3     原码:000011 补码000011
    x&y = 101100 & 000011 = 000000(补)=000000(原)=0
    

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

    -97:    原码:11100001 反码:10011110 补码:10011111
    120    原码:01111000 补码:01111000
    -97|120=10011111 | 01111000 = 11111111(补码)
    补码:11111111 反码:11111110 原码:10000001 =-1
    

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

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

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

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

    因为1 | 1 = 1
    1 | 0 = 1
    0 | 1 = 1
    0 | 0 = 0
    所以低8位置1所以y的低8位是11111111高8位不变,高8位是00000000
    所以y的二进制数是0b00000000 11111111
    
    
    

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

    补码公式 作用
    -x ~x + 1 ( ~(x-1))
    ~x -x-1
    -(~x) x+1
    ~(-x) x-1
    (x - ~y - 1) , (x|y)+(x&y) x+y
    (x + ~y + 1) , (x|y)-(x&y) x-y
    (x|y)-(x&y) x^y
    (x&~y)+y x|y
    (~x|y)-~x x&y
    ~(x-y|y-x) x==y
    x-y|y-x x!=y
    (x-y)^((x^y)&((x-y)^x)) x< y
    (x|~y)&((x^y)|~(y-x)) x<=y
    (~x&y)|((~x|y)&(x-y))//无符号x,y比较 x< y
    (~x|y)&((x^y)|~(y-x))//无符号x,y比较 x<=y

    相关文章

      网友评论

          本文标题:day7作业

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