Можете объяснить как работает перевод чисел с одной системы счисления в другую?
Взять например несколько переменных и попереводить их в системы счисления, например десятичную? Объясните пожалуйста как это работает, либо если есть возможность, дайте ссылку, где рассказывается об этом.
freeExec, В этом древнем языке сложно что-то найти. Я имею ввиду в программе как это сделать?
Типа: такого не в вики ни где не могу найти, пишу как и в заголовке, но ничего
freeExec, Я это уже давно знаю, вот даже ниже пример скинули:
135467 = 1 * 74 + 3 * 73 + 5 * 72 + 4 * 71 + 6 * 70 = 370910
370910 = 2 * 123 + 1 * 122 + 9 * 121 + 1 * 120 = 219112
Ну подскажите если разбираетесь, можно или нет?
У меня задания перевести несколько переменных в системы счисления. Но я не понимаю это в программе делать надо, или на листе написать подобным образом
135467 = 1 * 74 + 3 * 73 + 5 * 72 + 4 * 71 + 6 * 70 = 370910
370910 = 2 * 123 + 1 * 122 + 9 * 121 + 1 * 120 = 219112
Denys03, Я думаю тебе нужно переводить по указанному алгоритму, а результат записывать в виде ascii строки. Типа есть число 9, это 10001 в двоичной, записываешь в строку 31 30 30 30 31 и выводишь на экран.
Еблито Побрито, Понял, спасибо за идею, просто даже примеров не приложили, ничего не рассказали. Ну нам сказали, "Мы же не заставляем вас это учить" просто нужно базу освоить.
freeExec, Знаю, у меня с складыванием и умножениям и т.д. уже была задачка (индивидуальная, я её первой сделал) А тут не понимаю, даже примеров нет как это должно выглядеть. (хотя это проверочное задание и оно первое(их около 15), а индивидуальное было последним, и оно мне проще показалось чем это)
Denys03, проще всего переводятся кратные системы счисления. 2ичная 8ричная и 16 ричная.
Например 1111 = F, 0000 = 0. Из двоичной в шестнадцатеричную. Далее по этому шаблону можо делая текстовые замены все перевести. Этот метод удобно использовать когда например нечто приходит из текстового ввода пользователя.
Восьмеричка например используется в Линуксе когда задаешь права доступа. Семь семерок 777 - это 3 тройки
по 3 включенных бита. Что означает +rwx права на юзера, группу и прочих.
Десятичная система - здесь самая неудобная. Но если любое дестичное число уже записано в регистр процессора - то она уже разложена по битам. И чтоб распечатать ее битовое представление - можно просто сдвигать регистр и печатать старший бит.
Псевдокод наподобие С++
x = 135; // 32х разрядное целое
for(i =0; i < 32; i++) { // 32 итерации
print((x & 0x8000_0000) != 0 ? "1" : "0"); // Сдвигаем влево и печатаем старший бит
x <<= 1
}
В более обобщенном случае есть универсальная функция с аргументом *radix. Я ее встречал в разных языках разработки. Она позволяет переводить из любого символьного представления строки в целое при жестко
заданном алфавите букв ASCII и в диапазоне радикса.
Вот число 135 в двоичке.
scala> Integer.toString(135,2)
val res0: String = 10000111
И в троичной системе
scala> Integer.toString(135,3)
val res2: String = 12000
B 36 ричной системе
Integer.toString(135,36)
val res12: String = 3r
Дальше эта функция не работает потому что сложнее определить нужный алфавит букв.
Вся эта байда работае только для позиционных систем. Например Вавилонская где 60 разрядов может иметь вес в 60 раз больше для каждого следующего разряда. Для двоичной соотв - только в 2 раза.
Есть другие системы. Римская например. Для них эти алгоритмы не работают. Там как-то хитрее надо счиать потому что положение символа в Римской системе вляет на его вес по другому. И больше запутанных правил. Складывать сложнее.
Это понятно, а можно именно в программной видео это оформить? Мне просто нужно понять. Ну типа задать переменную вот так, и перевести в систему числения:
A1 DB 15H
mov ax,A1
В коде (турбо ассемблера) можно переводить? Знаю тупой вопрос, но надо с чего-то начинать