pygears - PyGears 如何制作与门
问题描述
假设我有两个模块 M1 和 M2,它们都输出 32 位数据。我想对每一位做逻辑与。怎么做?我一直在 GitHub 上查看库,但找不到用于 AND 操作的模块。
接下来我想做:
X[0] = M1[0] && M2[0]
X[1] = M1[1] && M2[1]
etc.
解决方案
add_gate 的代码示例:
@gear
async def and_gate(arg1, arg2) -> (Uint[32]):
async with arg1 as a1:
async with arg2 as a2:
res = a1 & a2
yield res
@alternative(and_gate)
@gear
async def and_gate_one_arg(args) -> (Uint[32]):
async with args as (a1, a2):
res = a1 & a2
yield res
res_two = []
res_one = []
@gear
def consumer():
arg1 = once(val=31, tout=Uint[32])
arg2 = once(val=15, tout=Uint[32])
args = once(val=(15, 31), tout=Tuple[Uint[32], Uint[32]])
bits_and_two_args = and_gate(arg1, arg2)
bits_and_one_arg = and_gate(args)
collect(bits_and_two_args, result=res_two)
collect(bits_and_one_arg, result=res_one)
consumer()
sim()
print(res_one)
print(res_two)
推荐阅读
- csv - 使用 CSV 标题行将 CSV 导入 FileMaker Pro 18
- django-rest-framework - django-rest-framework:每个 ViewSet 可以有多个模板吗?
- javascript - 具有多个值的 switch 语句
- postgresql - 如何将过滤器下推到视图的 group by 子句?
- android - Kotlin:协程运行阻塞中的滞后
- office365 - 如何使用客户端凭据通过团队会议 URL 在 Office 365 中创建事件
- node.js - 如何使用用户 ID 创建到电报配置文件的链接 - Node.js
- c# - 从一个寻路网格过渡到另一个
- android - 如果我在新帐户中使用新软件包名称重新发布旧应用程序,是否会违反模拟政策?
- android - 多次调用点击监听器来更新文本视图?