2016-12-09 2 views
1

Как преобразовать целые числа в массив с десятичной базой 4 (подписанный и без знака)?Преобразование десятичной в базовую 4 сборку (MIPS)

+2

Десятичный текст, или двоичный? :) Можете ли вы сделать это в псевдокоде или C? Где вы застряли? Покажите, что у вас есть. Кроме того, посмотрите вокруг SO, много примеров базового преобразования. – Jester

+0

текст. например: 23 следует преобразовать в 113 – Edmond

+0

Я посмотрел по сети, не смог найти ничего об этом. Мне не нужен весь код, просто идея. Я даже не знаю, как начать – Edmond

ответ

0

Вы можете использовать алгоритм деления числа на нужной базе несколько раз, пока частное не станет равным нулю, используя остатки как конечный результат в обратном порядке, например:

 QUOTIENTS OF EACH DIVISION 
      ▼  ▼  ▼ 
    23÷4 = 5÷4 = 1÷4 = 0 
     3  1  1 
     ▲  ▲  ▲ 
REMAINDERS OF EACH DIVISION 

Остатки являются цифры в новая база (в обратном порядке): «113».

Ваш код потребуется два блока:

  • Один блок, чтобы подразделения, пока частное не станет равным нулю, в этом блоке вы храните остатки в стек (PUSH). Each quotient является дивидендом следующего дивизиона.
  • Еще один блок, чтобы вытащить остатки и сохранить их в строке. Остатки будут извлечены в обратном порядке.

Edit: в случае отрицательных чисел, знак должен быть обнаружен первым, если знак отрицательный, необходимо получить абсолютное значение числа, например:

abs $t1, $t1 

знак должен быть повторно применен к результату в конце (при необходимости).

+0

И для подписанных номеров? – Edmond

+0

@ Эдмонд, только что отредактировал мой ответ, чтобы включить возможность отрицательных чисел. –

Смежные вопросы