2010-09-26 2 views
1

Как сказано. например для 8-битного (например, без байтового порядка) целое число 00100100, есть ли инструкция, дающая 5?Есть ли инструкция x86 (_64), которая дает индекс самого высокого (или самого низкого) '1' бита?

Спасибо заранее,

+0

Возможный дубликат [Битвое кручение: какой бит установлен?] (Http://stackoverflow.com/questions/3465098/bit-twiddling-which-bit-is-set) –

ответ

2

Да, BSR. Однако обратите внимание, что страница bithack утверждает, что, по крайней мере, на одном процессоре последовательность (развернутая петля) операций смены битов выполняется быстрее, чем один BSR.

+1

Я смущен комментарием страница bithacks. BSR сам по себе не вычисляет следующую самую высокую степень два. Вы должны использовать '64 - BSR (v - 1)', что, очевидно, не является «одной инструкцией языка ассемблера BSR». Возможно, я просто неправильно понимаю это. –

+0

Не быстрее. На следующей странице: «На Athlon ™ XP 2100+ я нашел вышеуказанный сдвиг-левый, а затем код OR так же быстро, как с помощью одной инструкции языка ассемблера BSR», – liorda

4

Технически, нет. Есть BSR, чтобы найти самый старший бит, который установлен, и BSF, чтобы найти наименее значимый бит, который установлен, - но самый маленький элемент, который будет работать, - это 16-разрядное слово.

Смежные вопросы