相关疑难解决方法(0)

从64位数字"隔离"特定的行/列/对角线

好吧,让我们考虑一个64位数字,其位形成一个8x8表.

例如

0 1 1 0 1 0 1 0 0 1 1 0 1 0 1 1 0 1 1 1 1 0 1 0 0 1 1 0 1 0 1 0 1 1 1 0 1 0 1 0 0 1 1 0 1 0 1 0 0 1 1 0 1 1 1 0 0 1 1 0 1 0 1 0

写作

a b c d e f g h
----------------
0 1 1 0 …
Run Code Online (Sandbox Code Playgroud)

c++ performance 64-bit bit-manipulation bitboard

31
推荐指数
2
解决办法
2356
查看次数

如何用8个bool值创建一个字节(反之亦然)?

我有8个bool变量,我想将它们"合并"成一个字节.

有一个简单/首选的方法来做到这一点?

相反,如何将一个字节解码为8个独立的布尔值?

我认为这不是一个不合理的问题,但由于我无法通过谷歌找到相关文档,它可能是另一个"非你所有直觉都是错误的"案例.

c++ boolean bit-manipulation bit-packing

20
推荐指数
4
解决办法
2万
查看次数

按位转置8个字节

我在C中寻找一种有效的算法来按位转换8字节的数据.我的意思是,如果我有8个这样的字节:

00011100
00111000
00000001
00000000
11000000
00000000
11111111
01010101
Run Code Online (Sandbox Code Playgroud)

我想获得以下8个字节:

00001010
00001011
01000010
11000011
11000010
10000011
00000010
00100011
Run Code Online (Sandbox Code Playgroud)

由于我想在嵌入式平台上使用它,它应该尽可能快:-)

所有的想法都非常感谢!

c embedded

15
推荐指数
1
解决办法
3763
查看次数

如何有效地转置2D位矩阵

我一直在为这个问题绊绊(例如在这个问题中)。以原始整数类型数组(例如的数组)的形式给定2D位矩阵/板/数组long。为简单起见,我们可以假设一个方阵,例如,long在具有64位的平台上,由64个值组成的数组long

让我们x[i]0 <= i < 64是输入数组。计算数组y[i]0 <= i <= 64使:

(x[i] >> j) & 1 == (y[j] >> i) & 1
Run Code Online (Sandbox Code Playgroud)

x >> ixby i位的按位右移,&是和,x[i]iarray 中第th个位置的值x

如何实现最有效地将数组映射x到数组的功能y

我主要是在寻找非破坏性的方法,这些方法会使输入数组x保持完整。

实施语言

使用的编程语言应具有整数类型的数组和按位运算。许多语言都满足这些要求。C / C ++和Java解决方案看起来非常相似,所以让我们选择这些语言。

c java arrays performance bit-manipulation

5
推荐指数
1
解决办法
1155
查看次数