【问题标题】:can someone explain meaning of a&=b? [duplicate]有人可以解释 a&=b 的含义吗? [复制]
【发布时间】:2021-03-22 02:31:59
【问题描述】:

我的问题是 a &= b 在网上搜索了一段时间后,我发现它是一个按位和运算符,但无法弄清楚它在这个程序中做了什么

x = int(input("Insert first number: "))
y = int(input("Insert second number: "))

if x>y:
    x,y =x,y
elif x<y :
    x,y= y,x

while x != 0 and y != 0:
    if x > y:
        x %= y
    else:
        y &= x

GCD = x + y
print("The greatest common divisor = ",GCD)

【问题讨论】:

标签: python


【解决方案1】:

x %= y 表示 x = x % y --- 这是 mod 运算符

x &= y 表示 x = x & y --- 这是按位“与”运算符。 前两个操作数(整数)被转换为二进制形式。然后,按位进行运算。

【讨论】:

    【解决方案2】:

    @angelogro 应该回答你的问题。

    我补充一下。

    "&" And Operator will keep all common `1` in two digits. 
    

    例如。

    3 = 0b011
    7 = 0b111
    

    3 和 7 将保留最后两个 1 答案应该是 3。

    除此之外,你发送的程序有问题,你可以试试测试用例

    x= 17 y = 5
    

    用于寻找 GCD 示例程序来自 https://www.geeksforgeeks.org/gcd-in-python/ 请检查一下

    def computeGCD(x, y): 
      
       while(y): 
           x, y = y, x % y 
      
       return x 
    

    【讨论】:

      【解决方案3】:

      这是一个二元运算AND,其中y&amp;x 的结果被写入y。 Here 是按位与的解释。

      例子:

      x=3
      y=7
      
      print(f"x in binary: {bin(x)}; y in binary: {bin(y)}")
      

      输出:x in binary: 0b11; y in binary: 0b111

      y&=x
      
      print(f"x in binary: {bin(x)}; y in binary: {bin(y)}")
      

      输出:x in binary: 0b11; y in binary: 0b11

      【讨论】:

        猜你喜欢
        • 2015-03-30
        • 2021-10-14
        • 2021-08-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-05
        • 2020-02-08
        相关资源
        最近更新 更多