Как сказано. например для 8-битного (например, без байтового порядка) целое число 00100100, есть ли инструкция, дающая 5?Есть ли инструкция x86 (_64), которая дает индекс самого высокого (или самого низкого) '1' бита?
Спасибо заранее,
Как сказано. например для 8-битного (например, без байтового порядка) целое число 00100100, есть ли инструкция, дающая 5?Есть ли инструкция x86 (_64), которая дает индекс самого высокого (или самого низкого) '1' бита?
Спасибо заранее,
Да, BSR. Однако обратите внимание, что страница bithack утверждает, что, по крайней мере, на одном процессоре последовательность (развернутая петля) операций смены битов выполняется быстрее, чем один BSR.
Я смущен комментарием страница bithacks. BSR сам по себе не вычисляет следующую самую высокую степень два. Вы должны использовать '64 - BSR (v - 1)', что, очевидно, не является «одной инструкцией языка ассемблера BSR». Возможно, я просто неправильно понимаю это. –
Не быстрее. На следующей странице: «На Athlon ™ XP 2100+ я нашел вышеуказанный сдвиг-левый, а затем код OR так же быстро, как с помощью одной инструкции языка ассемблера BSR», – liorda
Возможный дубликат [Битвое кручение: какой бит установлен?] (Http://stackoverflow.com/questions/3465098/bit-twiddling-which-bit-is-set) –