美文网首页
day07 作业

day07 作业

作者: 挽风style | 来源:发表于2019-01-02 20:13 被阅读0次
    1. 使用位运算判断一个数是否是奇数
    n = int(input('请输入数字:'))
    if n & 1 == 1:
        print('这个数是奇数')
    else:
        print('这个数不是奇数')
    
    1. 表达式0x13&0x17的值是(19 )

    print(bin(0x13)) # 10011
    print(bin(0x17)) # 10111
    010011 & 010111 = 19

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

    x =110100 , y= 000011
    101100(补) & 000011(补) = 000000(补) = 0

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

    -97 = 11100001,120 = 01111000
    10011111(补) | 01111000(补) = 11111111(补) = 10000001(原) = -1

    1. 在位运算中,操作数每右移一位,其结果相当于(B)
      A.操作数乘以2
      B.操作数除以2
      C.操作数除以4
      D.操作数乘以4

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

    1. 总结常用的位运算使用技巧(自己查自己,觉得好用记得住的)
      python的位运算符是把数字看作二进制来进行计算的。
    位运算符 用法 举例
    & 按位与:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 5 & 3 = 1:101 和 011 相同位仅为个位1 ,故结果为 001
    | 按位或:只要一个为1,则为1,否则为0 101 和 011 出现1的位是 1 1 1,故结果为 111
    ^ 按位异或:两个二进位相异为为1(即两个二进位要相反),否则为0 101 和 011 对位相加(不进位)是 110,故结果为 110(按位反转仅能用在数字前面。所以写成 3+~5 可以得到结果-3,写成3~5就出错了)
    ~ 取反:对数据的每个二进制位取反,即把1变0,把0变1 将二进制数+1之后乘以-1,即~x = -(x+1),-(101 + 1) = -110
    << 左移动:运算数的各二进位全部向左移若干位 5<<2 = 20 解释:101 向左移动2位得到 10100 ,即右面多出2位用0补
    >> 右移动:运算数的各二进位全部向右移若干位 5>>2 = 1 解释:101 向右移动2位得到 1,即去掉右面的2位

    相关文章

      网友评论

          本文标题:day07 作业

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