Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> алгоритм перевода, из 2-ичной системы в 16-тиричную 
:(
    Опции темы
rion
Дата 10.9.2007, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 10.9.2007

Репутация: нет
Всего: нет



Мне нужен алгоритм перевода с 2-ичной системы исчесления в 16-тиричную. Уже незнаю где спрашивать. Помогите плиз. :( 
PM MAIL   Вверх
ne0n
Дата 10.9.2007, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 5.8.2005
Где: Н.Новгород

Репутация: нет
Всего: 11



вообщем сначала переводишь в 10 систему, а из нее в 16-ричную:
Код

//переводим в десятичное
function BinTo(Value: string): Cardinal;
 var
   intX, PosCnt: Byte;
 begin
   Result := 0;
   PosCnt := 0;
   for intX := Length(Value) - 1 downto 0 do 
    case Value[intX + 1] of 
      '0': Inc(PosCnt);  
      '1':
         begin
          Result := Result or (1 shl PosCnt);
           Inc(PosCnt); 
        end;
     end;
 end;


перевод в 16-ю заключаеться в цикличном делении числа на 16, пока не получим остаток меньше 16!

хотя есть гораздо простой сппособ: делим двоичное число на на тетрады, т.е. например 11110000 делиться на 1111 и 0000(если не хватает нескольких цифр до завершения тетрады добовляем нули)

А вот тебе список значения тетрад:
bin       hex
0000    0
0001   1
0010   2
0011   3
0100   4
0101   5
0110   6
0111   7
1000   8
1001   9
1010   A
1011   B
1100   C
1101    D
1110    E
1111    F




Это сообщение отредактировал(а) ne0n - 10.9.2007, 23:54
PM MAIL ICQ   Вверх
Crot
Дата 11.9.2007, 04:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 31.1.2004

Репутация: нет
Всего: 3



Цитата(ne0n @  11.9.2007,  05:28 Найти цитируемый пост)
хотя есть гораздо простой сппособ: делим двоичное число на на тетрады, т.е. например 11110000 делиться на 1111 и 0000(если не хватает нескольких цифр до завершения тетрады добовляем нули)


Думаю, следуюет дополнить ответ тем, что "нули надо добавлять с левой стороны".

PM MAIL WWW ICQ   Вверх
ne0n
Дата 11.9.2007, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 5.8.2005
Где: Н.Новгород

Репутация: нет
Всего: 11



Цитата(Crot @  11.9.2007,  04:02 Найти цитируемый пост)
Думаю, следуюет дополнить ответ тем, что "нули надо добавлять с левой стороны".

разумееться, если речь едет о целой части числа(или вообще о целом числе), если же разговор идет о дробной части, то нули надо добавлять слева, а вообще я просто думал что все помнят школьные уроки информатики smile 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0651 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.