objective-c - Objective-c 中的位交织

标签 objective-c c bit-manipulation

我想了解什么是位交错。 我有一个例子:

a: 011
b: 101
---
c: 100111

据我所知,数字“a”的位在结果中的成对位置上,而数字“b”的位在损害位置上。 但为什么交错以数字“b”开头呢?有人知道这个规则吗?

我将在 Objective-C 中编写规则,因此非常欢迎与该语言相关的任何优化。

谢谢!

最佳答案

我找到了!

long x = 3;   // Interleave bits of x and y, so that all of the
long y = 5;   // bits of x are in the even positions and y in the odd;
long long z = 0; // z gets the resulting Morton Number.

for (int i = 0; i < sizeof(x) * CHAR_BIT; i++) {
    z |= (x & 1U << i) << i | (y & 1U << i) << (i + 1);
}

此代码执行位交织。如您所见,结果是一个莫顿数。 我希望这会对某人有所帮助! :)

关于objective-c - Objective-c 中的位交织,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5379844/

相关文章:

objective-c - 如何检测 Mac 耳机插孔中的东西?

c++ - 使用指针写入 strcat() 时出错

c - 二分查找代码中出现什么样的错误?

java - 计算 n 位 2 的补数的绝对值

java - 如何设置不按字节边界划分的位值

iOS 后台唤醒受密码保护的设备

objective-c - 如何在有条件的屏幕之间移动(如果...)

objective-c - 当 NSString 的长度减少时,内存会被释放吗?还是我必须做更多的事情?

c - 如何为 Unix 编写一个可以处理正则表达式的 C 程序?

swift - 如何在Swift中读取和写入大块内存中的位