比较两个数字,获取其中的不同位并填充 16 位寄存器,objective-C
这可能有点令人困惑。我有两个号码
x = 56 = 00111000
y = 50 = 00110010
我们可以看到它们之间总共有 4 个不同的位。我们需要取出这些位并填充 8 位寄存器的一部分。以同样的方式取另外两个数字(假设它们还有另外 4 位不同),然后填充 8 位寄存器的剩余部分。 有谁知道如何使用 Objective-c 来做到这一点?
this may be a bit confusing. I have two numbers, say
x = 56 = 00111000
y = 50 = 00110010
we can see that there a total of 4 different bits between them. we need to take those bits and fill up part of the 8 bit register. and in the same way take another two numbers ( say there are another 4 bits different in them ) then fill up the remaining part of the 8 bit register.
Does anyone know how to do this using objective-c ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我不懂Objective-C,所以用C编写并测试了它。希望您不介意:
逻辑是:
x ^ y
(x XOR y) - 给出数字x
和y 不同。使用
x ^ y
的位值测试x
并将其推入result
。使用y
重复此操作并将其推入result
。现在将x ^ y
右移1
。重复直到x ^ y != 0
。I don't know Objective-C, so wrote it in C and tested it. Hope you don't mind:
The logic is:
x ^ y
(x XOR y) - gives the bit locations in which the numbersx
andy
are different. Testx
with the bit value ofx ^ y
and push it intoresult
. Repeat it withy
and push it intoresult
. Now right shiftx ^ y
by1
. Repeat untilx ^ y != 0
.你可以使用差异
you can get difference using