Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Алгоритмы _ системы исчислений

Автор: sheka 10.06.2009 3:13

какие существуют методы перевода чисел из одной системы исчислений в другую?

Автор: Lapp 10.06.2009 5:24

Цитата(sheka @ 10.06.2009 0:13) *

какие существуют методы перевода чисел из одной системы исчислений в другую?

http://forum.pascal.net.ru/index.php?showtopic=4535

Добавлено через 4 мин.
М
sheka, пойми же наконец, что раздел "Теоретические вопросы" относится к теории языка Паскаль.
Если твой вопрос не про операторы или конструкции Паскаля, то для этого есть раздел Алгоритмы, например.
Переношу


Автор: sheka 10.06.2009 15:07

Код

function FromDec(n, radix:longint):string;
var
    s: String;
const
    digit: string[16]='0123456789ABCDEF';
begin
    s:='';
    repeat
        s:=digit[(n mod radix)+1]+s;
        n:=n div radix;
    until n=0;
    FromDec:=s;
end;


что такое n, radix?

Автор: Lapp 10.06.2009 15:13

Цитата(sheka @ 10.06.2009 12:07) *
что такое n, radix?
n - число, которое переводишь
radix - основание системы счисления (СС)

Автор: volvo 10.06.2009 15:15

N - само число, которое надо перевести из 10-ной в систему счисления с основанием Radix, т.е.,

s := FromDec(165, 16);
переведет 165 в 16-ричную СС, и вернет 'A5'

Автор: Lapp 10.06.2009 15:18

Конечно, название неудачное:

function FromDec(n, radix:longint):string;


На самом деле эта функция просто возвращает запись числа n в выбранной СС с основанием radix. Конечно, число n при этом не в десятичной системе, ессно. Это просто абстрактное число. Так что название FromDec совсем не отражает сути.

Автор: volvo 10.06.2009 15:22

Опять началось... Ну, предложи более удачное, я потом приду и скажу, что все данные, которыми оперирует компьютер, вообще хранятся в двоичном коде, поэтому такая функция вообще на фиг не сдалась, ибо переводит из двоичного кода в двоичный, а посему ничего не делает... Ничего не напоминает такая постановка?

Автор: Lapp 10.06.2009 15:45

Цитата(volvo @ 10.06.2009 12:22) *
Опять началось...
Володь, давай без "опять".

Просто хочется навести чуть больший порядок в голове у начинающего. Вопрос действительно тонкий - в том смысле, что легко запутаться. Да, машинное представление - двоичное. Но вполне могло бы быть и троичным, четыричным или еще каким-то - нас это не волнует. Именно это я и хотел сказать. Есть абстрактное понятие числа, и это главное. Как оно записано - в двоичной ли, десятичной, римской записи или записи Робинзона Крузо зарубками - это неважно, само посчитанное стадо овец от этого не изменится. Приведенная функция будет одинаково хорошо работать не только на машине с троичной логикой, но и для племени Мумба-Юмба, в котором принята 32-ричная СС (по числу зубов). И они, бедные, будут долго репу чесать, пытаясь понять - а при чем тут десятичная система? blink.gif

Более удачное название я приведу как нечего делать, и ты это знаешь. Но не в этом дело - я сказал, что считал нужным сказать. Я извиняюсь, что не дал себе труда посмотреть, кто писал этот код (и сейчас еще не знаю), но это дела не меняет. Я высказался на форуме, как свободный человек, that's it. Про "опять" - извини, не помню. Память подводит, видимо.