Проблема
Существует ли инструкция, которая собирает/извлекает первый бит в int[32]
и сохраняет его в int
?Собирают/Извлечь первый бит из массива Integer
Я знаю о внутренней
pext
, но это не совсем то, что я хочу.У меня есть код для этого, но я подумал, может быть, есть назначенная инструкция.
ints
массив равен нулю, кроме первого бита. Эрго, не нужно маскировки.
Код
void ints2bits(int &bits, int *ints) {
bits = (ints[0] << 0) + (ints[1] << 1) + ... + (ints[31] << 31);
}
UPDATE & ОБРАТНОЙ:
Только проверенные предложения Гарольда. Он работает очень хорошо, и я могу добиться хорошей скорости.
Если вы хотите извлечь первый бит из всех 31 целых чисел массива и сохранить бит в соответствующем месте в int, тогда вы ошибаетесь. – sameerkn
Это не ошибка. Я буквально его использую. Вопрос заключается только в том, что для этой операции существует определенная инструкция. Маскирование массива не требуется, кстати, это может быть причина, по которой вы заявляете о своей неисправности. –
Ваш код предполагает, что все остальные биты в int равны нулю, вы должны, вероятно, указать это явно в своей спецификации проблемы. – samgak