c++ - 使用 SSE 内在函数将 boolean 数组(8 字节 boolean )转换为 int 或 char

标签 c++ arrays boolean sse bit

<分区>

如何使用 SSE 内在函数将 boolean 数组(8 字节 boolean 数组)转换为 intchar

假设我有这个数组:

bool array[8] = {1,1,0,0,1,0,0,0};

并且我想将它转换为带有位 '11001000' 的字符。

harold 在 here 中建议我用下面的命令来做,但它不能正常工作:

__m128i values = _mm_loadl_epi64((__m128i*)array);
int result = _mm_movemask_epi8(_mm_slli_epi32(values, 7));

最佳答案

这段代码似乎是正确的,19确实是正确的输出。请记住,生成结果中的最低有效位将是数组中的第一个 bool,而不是最后一个。 如果您颠倒数组中 boolean 值的顺序,您将得到 200 作为结果。

关于c++ - 使用 SSE 内在函数将 boolean 数组(8 字节 boolean )转换为 int 或 char,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28811947/

相关文章:

c# - 根据文件名运行正确的方法 (C#)

filter - 如何使用 boolean 过滤器设置 KendoUi Grid 样式

javascript - 如何按 Javascript 中的值对关联数组进行排序?

javascript - 在Javascript中将句子作为元素放入数组中,这可能吗?

c++ - 为什么必须在哪里放置 “template”和 “typename”关键字?

c++ - 为什么 C++ 字符串分词器不工作

arrays - 如果存在则将对象插入数组,否则在 MongoDB 中设置对象

javascript - 为什么我得到不同的 boolean 结果,而它们应该是相同的?

c++ - COM 引用计数 - 线程安全

c++ - 比较 Fortran 和 C++ 汇编程序的 int = floor(sqrt(...))