当前位置: 首页 > 面试题库 >

如何在Python中执行按位非运算?

荣俊杰
2023-03-14
问题内容

为了测试使用更基本的构建块(在我的情况下使用Nand,Or和And)构建Xor操作,我需要能够执行Not操作。内置not似乎只用一位完成此操作。如果我做:

x = 0b1100
x = not x

我应该得到,0b0011但是我只是得到0b0。我究竟做错了什么?还是Python只是缺少此基本功能?

我知道Python具有内置的Xor函数,但我一直在使用Python来测试需要构建Xor门的HDL项目/课程的内容。我想在Python中进行测试,但是我不能没有一个Not门。


问题答案:

~在Python中使用的问题在于,它可以与带符号整数一起使用。除非您将自己限制为特定数量的位数,否则这也是真正有意义的唯一方法。它
工作正常按位数学,但它可以使难以解释的中间结果。

对于4位逻辑,您应该减去 0b1111

0b1111 - 0b1100  # == 0b0011

对于8位逻辑,请减去0b11111111等。

一般形式是

def bit_not(n, numbits=8):
    return (1 << numbits) - 1 - n


 类似资料:
  • 问题内容: 如果我有几行,并且想对结果执行按位或运算,如何在Postgres 9.x中执行呢? 例如我的表包含 我知道要执行select语句,以便从列中获取所有(或子集)值的“或”。 例如 希望您能理解我的意思,我无法弄清楚我想要的术语是什么。 问题答案: select bit_or(col1) from table group by col1; 参考(您的版本中可能不存在,因此请查看文档): 集

  • 问题内容: 为什么按位操作打印-1?在二进制中,不为0应该为1。为什么呢? 问题答案: 你实际上很亲密。 在二进制中,不为0应该为1 是的,当我们谈论一点时,这是绝对正确的。 但是,其值为0实际上是全零的32位!将所有32个零转换为32个零。 这是的补码表示形式。 类似地: 也就是说,对于32位无符号二进制补码表示,。 进一步阅读: 补码 这是Java(以及其他系统)用来表示带符号的数字位的系统

  • 问题内容: 为了简化从Ipython进行调试的过程,我在脚本的开头添加了以下内容 但是,如果我使用以下命令从命令行启动脚本 我收到与Ipython相关的错误。有没有办法做到以下几点 这样,仅在需要时才导入Tracer()函数。 问题答案: 您可能正在寻找这种东西:

  • 问题内容: 我在csv文件中有一个日期列,说有这种格式的日期,我还有另外一列。在列中,我要填充紧接在日期列中提到的日期之后的日期。例如。如果date列具有日期,那么我想在Next_Day列中。 我们可以在excel中使用,但我不知道如何在Python中执行此操作。 请帮助我解决这个问题。 问题答案: 使用

  • 本文向大家介绍定位和执行Python模块(运行),包括了定位和执行Python模块(运行)的使用技巧和注意事项,需要的朋友参考一下 命令行选项的–m选项搜索给定的模块并将其作为__main__模块执行。Python标准模块中的runpy模块在内部支持此机制,该脚本允许使用Python模块命名空间而不是文件系统来定位脚本。 该模块定义了两个功能 run_module() 该函数执行指定模块的代码,并

  • 嗨, 我还尝试使用com.querydsl.core.types.dsl.expressions和com.querydsl.core.types.predicate,如下所示: 但我得到了一个无效的运算符和错误。 怎么会这样呢?