2016-11-16 6 views
-1

Я пытаюсь сделать 4-битный калькулятор. Входной сигнал - это 2 цифры и знак. Калькулятор 4-бит, и если число больше 16, может быть переполнение.Четырехточечный калькулятор с переполнением

example

Я написал часть с + и -, но я не имею понятия, как продолжить.

Буду очень благодарен, если кто-то мне поможет.

string[] asignb = Console.ReadLine().Split(' '); 
int a = int.Parse(asignb[0]); 
string sign = asignb[1]; 
int b = int.Parse(asignb[2]); 

if (a > 16) { 
    a -= 16; 
} 

if (b > 16) { 
    b -= 16; 
} 

if (sign == "+") { 
    int addition = 0; 
    addition = a + b; 

    if(addition > 16) { 
     addition -= 16; 
    } 
    Console.WriteLine(addition); 

} else if(sign == "-") { 
    int subtraction = 0; 
    subtraction = a - b; 

    if (subtraction < 0) { 
     subtraction += 16; 
    } 
    Console.WriteLine(subtraction); 

} 
+1

Было бы более заметным. Если вы можете загрузить то, что вы сделали до сих пор –

+0

Вы можете использовать modulo для целых положительных чисел. Вы можете выполнить свою арифметику, скажем, «2 + 23». Предположительно, из того, что вы сказали, код в настоящее время оценивает этот штраф и возвращает '25' - вы можете получить 16-битное целое число, которое вы ищете, например' 25% 16' –

+0

@saad suri Я загружаю его. Спасибо, что напомнили. –

ответ

0

Ну, неэффективным, но простым в использовании способом было бы многократно добавлять или вычитать. (2 * 5) = (2 + 2 + 2 + 2 + 2).

Целочисленное подразделение будет просто количеством раз, которое вы можете вычесть до достижения нуля (переполнение может быть проблемой).

Если вы хотите получить более эффективные или полные ответы, попробуйте найти бинарное умножение/деление.