Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2011, 08:48   #11
Zhana
Пользователь
 
Регистрация: 27.10.2011
Сообщений: 11
По умолчанию

Верно последнее предположение. Спасибо ребята!!!
Zhana вне форума Ответить с цитированием
Старый 01.12.2011, 09:18   #12
Zhana
Пользователь
 
Регистрация: 27.10.2011
Сообщений: 11
По умолчанию

А "0" для чего???
Zhana вне форума Ответить с цитированием
Старый 01.12.2011, 09:31   #13
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

http://www.delphibasics.ru/IntToHex.php
Это чтобы не вставлять ведущие нули, например
IntToHex(255,0) //FF
IntToHex(255,4) //00FF
благодарность - сюда (не забываем писать от кого)
Zer0 вне форума Ответить с цитированием
Старый 02.12.2011, 01:17   #14
Zhana
Пользователь
 
Регистрация: 27.10.2011
Сообщений: 11
По умолчанию

Помогите пожалуйста с описанием функций. В переводе BintoHex я не поняла строки начинающиеся с While, For. А вот с переводом OcttoDec все немного сложнее. Я не понимаю смысла операций по переводу. Помогите понять очень прошу
Вложения
Тип файла: txt Новый текстовый документ.txt (1.3 Кб, 158 просмотров)
Zhana вне форума Ответить с цитированием
Старый 02.12.2011, 06:49   #15
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

BinToHex:
Код:
While Length(Bin) mod 4<>0 do Bin:='0'+Bin;
Добивает ведущие нули к числу, чтобы количество знаков было кратно четырем (потому что перевод происходит по четыре бита)
Код:
For k:=0 to Length(Bin) div 4 -1 do
   Begin
      s:=Copy(Bin,k*4+1,4);
В этом цикле берем по 4 символа из строки (просто посмотрите как работает функция Copy)

Oct2Dec:
Код:
const
  OCTSet: set of CHAR = ['0'..'7'];
Задает возможные цифры для восьмеричной системе (других в числе просто быть не может)
P.S. Надеюсь что Вы знакомы с теорией перевода чисел из одной системы счисления в другую
Код:
for J := 1 to Length(OCT) do
  begin
      if not (UpCase(OCT[J]) in OCTSet) then
Циклом проходимся по строке... В первую очередь смотрим, допустима ли текущая цифра, то есть находится ли она в множестве 0..7, если не попадает, то
Код:
      Error := True;
и в конце концов результат обнулится:
Код:
    if Error then
    OCT2DEC := 0
А вот тут нужно немного поразмыслить, просто я не смогу обяснить:
Код:
      DEC := DEC + (Ord(OCT[J]) - 48) shl ((Length(OCT) - J)*3
Shl - побитовый сдвиг числа, т.е.
1 shl 2 = (001 shl 2) = 100 = 4 , бит сдвинули на две позиции вправо
2 shl 3 = (00010 shl 3) = 10000 = 16 итд
В текущем случае, высчитывается цифра (т.к. у нас строка, а не число:
Ord(OCT[J]) - 48
48 - код символа '0', соответственно если его вычесть из кода текущего символа, то получим цифру
а затем получившееся число сдвигаем на нужное кол-во бит влево (длина строки-номер текущего символа умноженное на 3)
В конце это прибавляется к сумме
Для примера
123(oct)
dec = 1 shl (3-1)*3 + 2 shl (3-2)*3 + 3 shl (3-3)*3 = 0000001 shl 6 + 00010 shl 3 + 11 shl 0 =
1000000 + 10000 + 11 = 1010011(bin) = 83(dec)
благодарность - сюда (не забываем писать от кого)
Zer0 вне форума Ответить с цитированием
Старый 02.12.2011, 21:36   #16
Zhana
Пользователь
 
Регистрация: 27.10.2011
Сообщений: 11
По умолчанию

Спасибо за такой ответ. И все таки я не поняла, для чего там стоит "-1" и "+1,4"
Zhana вне форума Ответить с цитированием
Старый 02.12.2011, 21:40   #17
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Copy(Bin,k*4+1,4) это разные числа ) гляньте описание функции Copy
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 02.12.2011, 21:48   #18
Zhana
Пользователь
 
Регистрация: 27.10.2011
Сообщений: 11
По умолчанию

Число единица начало копирования 4 - окончание, Bin название строки а k*4?
Zhana вне форума Ответить с цитированием
Старый 02.12.2011, 21:51   #19
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Copy(Bin, исходная строка
k*4+1, начало копирования(а не 1 как по вашему мнению)
4) количество символов
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 02.12.2011, 21:58   #20
Zhana
Пользователь
 
Регистрация: 27.10.2011
Сообщений: 11
По умолчанию

Спасибо Вам!!!
Zhana вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Калькулятор для перевода чисел в шестнадцатиричную систему счисления Zhana Помощь студентам 0 27.10.2011 18:18
перевода целого числа в римскую систему счисления enternity Помощь студентам 2 17.10.2011 01:37
калькулятор перевода из 16 в 10 систему в С++ tima39 Общие вопросы C/C++ 1 19.04.2011 20:13
формула перевода чисел из десятичной системы счисления в 2-ую,8-ую и 16-ую в Microsoft Visual c#? Лютик Помощь студентам 0 18.12.2009 10:42
написал алгоритм перевода чисел из 10 в любую другую систему счисления...компилиться, но не выполняеться STR78 Общие вопросы C/C++ 4 03.11.2008 17:07