Registriert seit: 29. Mär 2009
439 Beiträge
|
AW: Index vom x-tem gesetztem Bit
3. Jun 2020, 12:36
Sehr schöne Vorschläge . Bevor jetzt gleich die Lösung via Cloud-Computing kommt - back to the roots:
Delphi-Quellcode:
program Project5;
uses
SysUtils;
function CheckBitAsm( const Value, BitNumber: Integer): Integer;
asm
or Value,Value
jz @exit
cmp BitNumber,0
jle @exit
mov ecx,1
@loop:
test Value, ecx
jz @next
dec BitNumber
jz @ready
@next:
rol ecx,1
jmp @loop
@ready:
mov eax, ecx
ret
@exit:
xor eax,eax
ret
end;
begin
try
// Test
if CheckBitAsm(42, 3) = 32 then
writeln(' Test 3 - ok');
if CheckBitAsm(42, 5) = 8 then
writeln(' Test 4 - ok');
readln;
except
on E: Exception do
writeln(E.ClassName, ' : ', E. Message);
end;
Natürlich nicht ernst gemeint!
Geändert von samso ( 3. Jun 2020 um 12:41 Uhr)
Grund: BitNumber soll größer 0 sein
|
|
Zitat
|