微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

可以捕获与整数值对应的 16 位二进制中的第 i 位的逻辑表达式?

如何解决可以捕获与整数值对应的 16 位二进制中的第 i 位的逻辑表达式?

我目前正在处理 Nand2Tetris 课程的最后一个项目。
我一直在尝试弄清楚逻辑表达式在实现按位计算时是如何工作的。

y(5 是二进制的 101,因此 twoToThe[i] == 0 和 {{1} } 是 twoToThe[0] == 0,这是正确的答案)
但是为什么在 twoToThe[2] == 0 时没有显示完全相反的结果?
我认为它会在 FalsetwoToThe[i] == 1

上返回 True

代码如下

twoTwoThe[0] == 1

解决方法

y & twoToThe[0] 表达式计算为一个新整数(作为 5 位和 twoToThe[i] 位之间的按位和运算的结果),而不是像 I 那样的布尔值以为你在期待。检查一下:

y = 5
# Array that holds i'th bit's integer values in 16-bit binary (e.g. twoToThe[4] = 16)
twoToThe = [1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768]

print(type(y & twoToThe[0])) #int

print(y & twoToThe[0]) # 1
print(y & twoToThe[1]) # 0
print(y & twoToThe[2]) # 4
print(y & twoToThe[3]) # 0
print(y & twoToThe[4]) # 0
print(y & twoToThe[5]) # 0

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。