Я делал так:
unsigned int i; // исходное число unsigned int n; // длина исходного числа (число значащих бит) unsigned int t; // результат asm { // зеркальное отражение битов mov eax, i; xor ebx, ebx; mov ecx, n; @: rcr eax, 1; // >> 'C (выдвигаем крайний бит в CARRY) rcl ebx, 1; // << 'C (задвигаем из CARRY в крайний бит результата) loop @, ecx; mov t, ebx; }
<pre>
<code>
<asm>
<c>
<cpp>
<delphi>
<drupal5>
<drupal6>
<java>
<javascript>
<php>
<python>
<ruby>
<mytext>
<foo>
[foo]
Подробнее о форматировании
Реверс битов
Я делал так:
unsigned int i; // исходное число
unsigned int n; // длина исходного числа (число значащих бит)
unsigned int t; // результат
asm { // зеркальное отражение битов
mov eax, i;
xor ebx, ebx;
mov ecx, n;
@: rcr eax, 1; // >> 'C (выдвигаем крайний бит в CARRY)
rcl ebx, 1; // << 'C (задвигаем из CARRY в крайний бит результата)
loop @, ecx;
mov t, ebx;
}