Другие языки программирования и технологии

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

Только не между 8/2/16, а в любуюВобщем, мне надо написать функцию на Ассемблере... для личный нужд... Которая бы переводила числа между системами исчисления и число <=> текстовое представлениеПодскажите плиз общую схему, как вообще это делается?P.S. Всяких функций, как например base_convert и прочих, которые работают непонятно как, просьба не писатьМне нужно понять принципЗаранее спасибо
Как тут написать не знаю, но попробую.

Например у тебя есть число 9 и его надо перевести в двоичную систему.

9/2=4 4*2=8 9-8=1
4/2=2 2*2=4 4-4=0
2/2=1 2*1=2 2-2=0

В результате последнего деления получилась 1, она не делится на 2 и является последней цифрой кода, а код получился: 1001 (1*8+0*4+0*2+1*1=9)

Соответсвенно, для перевода в другую систему нужно делить на её базу, те 2, 8, 4, 10...
Павел Фардзинов
Павел Фардзинов
167
Лучший ответ
много инфы в гугле по этому поводу
Anton Calvados
Anton Calvados
4 809
Исходное число, а затем получаемые частные нужно последовательно делить на основание новой системы счисления.
Деление следует производить до тех пор, пока не получится частное меньше основания новой системы счисления.
После этого нужно записать число в новой системе счисления, начиная с последнего частного, которое будет являться старшей цифрой, а следующие за ней цифры - остатки от деления записываются в порядке, обратном их получению.
ПИ
Пётр Иванов
1 223
Раздели чилсо на сумму этих чисел (2,4,8,16,32,64,128,256,512,1024,2048)
Пусть число 120
120 = 64 + 32 +16 + 8
теперь преобразуем слагаемые в 2 в степени
120 = 2^6 + 2^5 + 2^4 + 2^3
показатели степеней указывают на каком месте стоят еденицы в двоичной записи числа
получаем
1111000
Места считаются слева на право начиная с НУЛЯ!

Спасибо :)

Нашел пример на Бейсикке перевода числа в двоичную систему исчисления
Может поможет:
cls
input n
a$ = ""
1 b = n MOD 2
n = Int(n / 2)
x$ = Str$( b )
a$ = x$ + a$
if n <> 0 then goto 1
print a$
end.
Mr.jonik 92
Mr.jonik 92
388
Mr.jonik 92 Если число отрицаетльное например 121 то будет так
121 = 64+32+16+8+1
121 = 2^6 + 2^5 + 2^4 + 2^3 + 2^0
Получим
1111001
Mr.jonik 92 То есть нечетное XDDd
лоханулся ппц ))

Похожие вопросы