На главную страницу
Форум txt.version   




Статья :: Преобразование двоичного числа в десятичное
Преобразование двоичного числа в десятичное

Может ли кто-нибудь дать мне идею простого преобразования двоичного кода (base2) в десятичный (base10)?

Решение 1


    /////////////////////////////////////////////////////////////////////////
// преобразование 32-битного base2 в 32-битный base10                  //
// максимальное число = 99 999 999, возвращает -1 при большем значении //
/////////////////////////////////////////////////////////////////////////


function Base10(Base2:Integer) : Integer; assembler;
asm
cmp        eax,100000000        // проверка максимального значения
jb         @1                   // значение в пределах допустимого
mov        eax,-1               // флаг ошибки
jmp        @exit                // выход если -1
@1:
push       ebx                  // сохранение регистров
push       esi
xor        esi,esi              // результат = 0
mov        ebx,10               // вычисление десятичного логарифма
mov        ecx,8                // преобразование по формуле 10^8-1
@2:
mov        edx,0                // удаление разницы
div        ebx                  // eax - целочисленное деление на 10, edx - остаток от деления на 10
add        esi,edx              // результат = результат + разность[I]
ror        esi,4                // перемещение разряда
loop       @2                   // цикл для всех 8 разрядов
mov        eax,esi              // результат функции
pop        esi                  // восстанавление регистров
pop        ebx
@exit:
end;

Решение 2


    function IntToBin(Value: LongInt;Size: Integer): String;
var
i: Integer;
begin
Result:='';
for i:=Size downto 0 do begin
if Value and (1 shl i)<>0 then begin
Result:=Result+'1';
end else begin
Result:=Result+'0';
end;
end;
end;

function BinToInt(Value: String): LongInt;
var
i,Size: Integer;
begin
Result:=0;
Size:=Length(Value);
for i:=Size downto 0 do begin
if Copy(Value,i,1)='1' then begin
Result:=Result+(1 shl i);
end;
end;
end;

Решение 3

Следующая функция получает в качестве параметра Base (1..16) любую десятичную величину и возвращает результат в виде строки, содержащей точное значение BaseX. Вы можете использовать данный алгоритм для преобразования арабских чисел в римские (смотри ниже).


    function DecToBase( Decimal: LongInt; const Base: Byte): String;
const
Symbols: String[16] = '0123456789ABCDEF';
var
scratch: String;
remainder: Byte;
begin
scratch := '';
repeat
remainder := Decimal mod Base;
scratch := Symbols[remainder + 1] + scratch;
Decimal := Decimal div Base;
until ( Decimal = 0 );
Result := scratch;
end;

Передайте данной функции любую десятичную величину (1...3999), и она возвратит строку, содержащую точное значение в римской транскрипции.


    function DecToRoman( Decimal: LongInt ): String;
const
Romans: Array[1..13] of String =
( 'I', 'IV', 'V', 'IX', 'X', 'XL', 'L', 'XC', 'C', 'CD', 'D', 'CM', 'M' );

Arabics: Array[1..13] of Integer =
( 1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000);

var
i: Integer;
scratch: String;
begin
scratch := '';
for i := 13 downto 1 do
while ( Decimal >= Arabics[i] ) do
begin
Decimal := Decimal - Arabics[i];
scratch := scratch + Romans[i];
end;
Result := scratch;
end;
[000004]

Преобразование двоичного числа в десятичное

страницы в данном разделе 
 Преобразование ASCII в шестнадцатиричное представление  Преобразование двоичного числа в десятичное
 Перевод из BitMap в Icon  Преобразование '1010' в '001010'
 Преобразование BMP в JPEG в Delphi 3  Декомпилляция звукового файла формата Wave и получение звуковых данных
 dec->hex  HEX -> Integer
 Преобразование ICO в BMP  FAQ Валентинa Озеровa DELPHI
 Число строкой I  Число строкой II
 Число строкой III  Число строкой IV
 Число строкой V  Число строкой VI
 Число строкой VII  Unix-строки (чтение и запись Unix-файлов)


Разделы
Околокомпьютерная литература (375)
Программирование (102)
Программы (75)
ОС и Сети (49)
Интернет (29)
Аппаратное обеспечение (16)
Базы данных (6)

Содержание сайта (выборка)
Apache
Протоколы TCP/IP (принципы, протоколы и архитектура)

PHP, PELR, JSP
PHP
JavaServer Pages (JSP)

Базы данных
Основы mysql
СУБД INFORMIX
СУБД POSTGRES
Основы проектирования реляционных баз данных

HTML, javascript
Спецификация HTML 4.01
Каскадные Таблицы Стилей, Уровень 2
Клиентский JavaScript. Справочник.
JavaScript руководство пользователя
Серверный JavaScript 1.4. Руководство по Использованию.

Паскаль, C, C++, C#
GCC (примеры)
FAQ Валентинa Озеровa DELPHI
C





 
©  programming-lang.com  справочник программиста