美文网首页
Day7 作业与位运算技巧

Day7 作业与位运算技巧

作者: ChiAo1fei | 来源:发表于2019-01-02 20:48 被阅读0次

作业

  1. # 1
    num1 = int(input('请输入一个整数:'))
    if num1 & 1:
        print(num1,'是奇数')
    else:
        print(num1,'是偶数')
    
  2. 2
    表达式0x13&0x17的值是(19 )
    0x13 = 19 = 0b10011   0x17 = 23 = 0b10111
    0b10011 & 0b10111 = 0x10011 = 19
    
  3. # 3
    若x=-20,y=3则x&y的结果是(0 )
    -20 = 0b110100(原) = 0b101011(反) = 0b101100(补)
    3 = 0b000011(补码)
    x & y = 0b101100 & 0b000011 = 0b000000(补) = 0
    print(-20 & 3)
    
  4. 4
    表达式 -97 | 120 的运算结果是(-1)
    -97 = 0b11100001(原) = 0b10011111(补)
    120 = 0b01111000(补)
    0b10011111 | 0b01111000 = 0b1111111(补) = 0b1000001
    print(-97 | 120)
    
  5. 在位运算中,操作数每右移一位,其结果相当于(B )
    A.操作数乘以2
    B.操作数除以2
    C.操作数除以4
    D.操作数乘以4

6.设x 是一个整数(16位).若要通过x|y使x低度8位置1,高8位不变,则y的二进制数是(00001111 )
​ 或运算 高八位不变则y的高八位的每一位分别是0000低八位为1111则y=00001111

位运算技巧总结

  1. 不使用 + 完成加法

    def add(num1,num2):
        sum = 0
        carry = 0
        # 循环  结果相加直到进位为0
        while num2 != 0:
            # 将两个数异或,模拟加法中相加不进位
            sum = num1 ^ num2
            # 只考虑进位
            carry = (num1 & num2) << 1
            num1 = sum
            num2 = carry
        return sum
    print(add(1,3))
    
  2. 交换两数的值

    a = 12
    b = 13
    a = a ^ b
    b = b ^ a
    a = a ^ b
    print(a,b)
    
  3. 取绝对值

    n = -25
    n = (n ^ (n >> 31)) - (n >> 31)
    print(n)
    
  4. 取最大值

    a = 25
    b = 96
    n = b &((a -b) >> 31) | a & (~(a - b) >> 31)
    print(n)
    
  5. 取最小值

    a = 25
    b = 96
    n = a &((a -b) >> 31) | b & (~(a - b) >> 31)
    print(n)
    
  6. 从低位到高位 取n的第m位

    n = 0b111000
    m = 1
    print(n)
    bit1 = n >> (m - 1) & 1
    print(bit1)
    
  7. 从低位到高位 将n的第m位置1

    n = n | (1 << (m - 1))
    print(bin(n))
    
  8. 从低位到高位 将n的第m位置0

    n = n & ~(1 << (m - 1))
    print(bin(n))
    

相关文章

  • Day7 作业与位运算技巧

    作业 # 1num1 = int(input('请输入一个整数:'))if num1 & 1: print(...

  • Day7 作业总结以及位运算

    作业总结 数值交换a = 12b = 13a,b = b,aprint(a,b) 判断列表元素的类型isinsta...

  • Day7进制与位运算

    python中的进制 计算机在存储数的时候是以二进制的形式去存的python中的进制包含有十进制,十六进制,八进制...

  • 位运算技巧

    消除x最后一位1:x & (x - 1)Go代码: 一、用O(1) 时间检测整数 n 是否是 2 的幂次。分析:如...

  • 位运算技巧

    基础知识 对于位运算,大家都很熟悉,基本的位操作有与(&)、或(|)、非(~)、异或(^)等等。在面试中经常会出现...

  • 位运算技巧

    位运算技巧的总结 1. 位运算基础 与(&)两个比特位同时为1结果为1,否则为0 或(|)只要有一个为1结果就为1...

  • Python基础之位运算符(含原码反码补码的通俗解释)

    目录 1 二进制 2 原码、反码、补码 3 位运算符 4 位运算符使用技巧 上回学习运算符时,漏了位运算符,因为位...

  • C语言08- 位运算,宏定义,递归

    16:位运算 16.1:位运算概述 二进制与位运算 16.2:与(and):& 与运算:只有当2个数对应的位都为1...

  • 强大的位运算符

    位取反运算符 位取反运算符(~)是对所有位的数字进行取反操作位取反运算符.png 位与运算符 位与运算符(&)可以...

  • 位运算小技巧

    位运算的一些小技巧,C语言描述,翻译自bithacks 计算一个整数(integer)的符号 上面最后一个语句使用...

网友评论

      本文标题:Day7 作业与位运算技巧

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