Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Andrey Tarasevich                    2:5020/400     26 Jul 2003  11:46:21
 To : Alexey Moiseev
 Subject : Re: Д.Е.Кнут "Исскусство программирования" 2ой том.
 -------------------------------------------------------------------------------- 
 
 Alexey Moiseev wrote:
 
 > ...
 > И еще -- как переводить из одной системы счисления в другую без промежуточного
 > перевода в десятиную?(упр.9 стр.243)
 > ...
 
 Странная постановка вопроса. Hе хочешь промежуточного перевода в
 десятичную - сделай промежуточный перевод в двоичную :)
 
 Если же использование промежуточной системы вообще не допустимо, то
 читай дальше.
 
 Если у тебе нужно перевести представление числа N из системы счисления с
 основанием A в систему счисления с основанием B, то можно
 воспользоваться одним из двух способов.
 
 Первым способом является следующий:
 
 - При помощи вычислителя, оперирующего представлениями чисел в системе
 счисления A, производим операцию деления с остатком числа N на число B.
 Остаток, записанный числом в системе счисления B, будет являться
 очередной цифрой результата (в порядке справа налево). А над частным
 снова производится операция деления и т.д.
 
 Вторым способом является следующий:
 
 - При помощи вычислителя, оперирующего представлениями чисел в системе
 счисления B, вычисляем значение выражения
 
   N_0 + N_1 * A + N_2 * A^2 + N_3 * A^3 + ...
 
 где N_i - цифры представления числа N в системе счисления A,
 рассматриваемые как числа в системе счисления B.
 
 Как видишь, выбор одного из этих двух способов определяется тем, какой
 системой счисления оперирует имеющийся у тебя вычислитель, при помощи
 котрого ты будешь производить перевод.
 
 Hапример, пусть нам необходимо перевести число, представляемое как
 10101101b (в двоичной системе счисления), в шестнадцатиричную систему
 счисления.
 
 Если у нас имеется двоичный вычислитель, то мы можем воспользоваться
 первым способом, т.е. производить циклическое деление нашего исходного
 числа на число 10000b (= 16h)
 
   10101101b / 10000b = 1010b, ост - 1101b = Dh
   1010b     / 10000b = 0b,    ост - 1010b = Ah
 
 Таким образом, результат - ADh.
 
 Если же у нас имеется шестнадцатиричный вычислитель, что мы можем
 воспользоваться вторым способом, т.е. просто вычислить значение выражения
 
   1h + 0h * 2h + 1h * 4h + 1h * 8h + 0h * 10h + 1h * 20h +
     + 0h * 40h + 1h * 80h = ADh
 -- 
 Best regards,
 Андрей.
 
 --- ifmail v.2.15dev5
  * Origin: Demos online service (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Д.Е.Кнут "Исскусство программирования" 2ой том.   Alexey Moiseev   25 Jul 2003 12:22:25 
 Д.Е.Кнут "Исскусство программирования" 2ой том.   Evgenij Masherov   25 Jul 2003 14:49:29 
 Re: Д.Е.Кнут "Исскусство программирования" 2ой том.   Andrey Tarasevich   26 Jul 2003 11:46:21 
 Д.Е.Кнут "Исскусство программирования" 2ой том.   Maxim Lanovoy   26 Jul 2003 11:12:40 
 Д.Е.Кнут "Исскусство пpогpаммиpования" 2ой том.   Alexandra Zanko   26 Jul 2003 15:50:57 
 Re: Д.Е.Кнут "Исскусство пpогpаммиpования" 2ой том.   Andrey Tarasevich   26 Jul 2003 21:28:53 
Архивное /ru.algorithms/668242d0e0f4.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional