如何使用SSE内在函数将bool数组(8字节bool)转换为int
或char
?
假设我有这个数组:
bool array[8] = {1,1,0,0,1,0,0,0};
我希望将其转换为位为'11001000'
的字符。
哈罗德在here建议我使用以下命令执行此操作,但它无法正常工作:
__m128i values = _mm_loadl_epi64((__m128i*)array);
int result = _mm_movemask_epi8(_mm_slli_epi32(values, 7));
答案 0 :(得分:2)
这段代码似乎是正确的,19确实是正确的输出。请记住,生成结果中的最低有效位将是数组中的第一个bool而不是最后一个。 如果你反转数组中bool的顺序,你将得到200作为结果。