![]() |
Разъясните код программы, пожалуйста.
Есть две функции перевода чисел из десятичной системы счисления в двоичную и из десятичной в шестнадцатеричную.
Мне не понятен сам код программы, объясните какими действиями что мы делаем. Код программы писал не я, увы :( function DEC2BIN(DEC: LONGINT): string; var BIN: string; I, J: LONGINT; begin if DEC = 0 then BIN := '0' else begin BIN := ''; I := 0; while (1 shl (I + 1)) <= DEC do I := I + 1; for J := 0 to I do begin if (DEC shr (I - J)) = 1 then BIN := BIN + '1' else BIN := BIN + '0'; DEC := DEC and ((1 shl (I - J)) - 1); end; end; DEC2BIN := BIN; end; function DEC2HEX(DEC: LONGINT): string; const HEXDigts: string[16] = '0123456789ABCDEF'; var HEX: string; I, J: LONGINT; begin if DEC = 0 then HEX := '0' else begin HEX := ''; I := 0; while (1 shl ((I + 1) * 4)) <= DEC do I := I + 1; for J := 0 to I do begin HEX := HEX + HEXDigts[(DEC shr ((I - J) * 4)) + 1]; DEC := DEC and ((1 shl ((I - J) * 4)) - 1); end; end; DEC2HEX := HEX; end; |
тут используются битовые операции
но если не понятно, то не используйте этот код, лучше нагуглите примеры с mod и div |
Да, и в прям витиеватый код.
Pulemetic, Надо идти по шагам, отслеживая изменения переменных. Если лень, то вариант предложенный fergetом: Цитата:
|
Время: 18:07. |
Время: 18:07.
© OSzone.net 2001-