我想使用下面的程序打印一个数字,但它从来没有正确打印,我找不到问题,你能帮帮我吗?
all_method_values = []
for obj in Model2.objects.all():
all_method_values.append(Model1.get_gallery_url(obj.user.user_url, obj.gallery.slug))
答案 0 :(得分:2)
您的代码还有其他问题,但主要问题是您的if
声明。
if (value & mask == 1)
有两个问题:
==
优先级高于&
,因此解析时就像编写value & (mask == 1)
一样。但是你想首先进行掩蔽,然后进行比较,所以你必须写(value & mask) == 1
。
当您进行屏蔽时,通常不会获得1
。当屏蔽位置1时,您将在该位获得一个1
的数字,而不是最低位。不使用== 1
,而是使用!= 0
来查看该位是否已设置。您也可以使用(value & mask) == mask
。
将该行更改为:
if ((value & mask) != 0)
它通常会起作用。
但是,您的代码具有实现定义的行为,因为您正在对有符号整数变量执行位操作。在32位系统上,0x80000000
溢出int
的最大值,并且执行定义的有符号数的移位。将value
和mask
更改为unsigned int
,一切都应该没问题。