【问题标题】:Four bit calculator with overflow带溢出的四位计算器
【发布时间】:2016-11-16 11:15:56
【问题描述】:

我正在尝试制作一个 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);

}

【问题讨论】:

  • 会更明显。如果你能上传你到目前为止所做的事情
  • 您可以对正整数使用模数。你可以做你的算术,比如说2 + 23。据推测,从你所说的来看,代码目前评估得很好并返回25 - 你可以得到你正在寻找的16位整数25 % 16
  • @saad suri 我上传了。谢谢你提醒我。
  • 不确定你到底在问什么,但在操作数和结果上使用 &amp; 0xf 运算符将确保 4 位
  • Alfie Goodacre -- 如果我有 2 + 23,结果将是 (23 - 16 = 7),所以 7+2 = 9

标签: c# if-statement conditional conditional-statements calculator


【解决方案1】:

一个低效但易于实现的方法是重复加减。即 (2*5) = (2+2+2+2+2)。

整数除法只是在达到零之前可以减去的次数(溢出可能是一个问题)。

如果您想要更有效或更全面的答案,请尝试查找二进制乘法/除法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-06
    • 2021-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-26
    • 1970-01-01
    相关资源
    最近更新 更多