对一个非常大的二进制数(101111111100000000001111111111000000000011111111


static string ReturnValueIfInputOneIsThree(string inputOne, string input)
{
string result = "";
if (CheckIfInputOneIsInACorrectFormatOrNot(inputOne, input) && inputOne == "3")
{
for (var i = 0; i < input.Length; i++)
{
if (input[i] == '0')
{
result += "1";
}
else if (input[i] == '1')
{
result += "0";
}
}
var finalResult = Convert.ToIn64(result, 2);
return finalResult.ToString();
}
return ThisReturnValuInMain(inputOne, input);
}

如果我引入一个以2为基数的数,我应用非运算符,例如~00110001或~10,我得到了正确的结果,但是当我引入一个非常大的二进制数,如:

101111111100000000001111111111000000000011111111111100000000001111111111111100000000001111111111000000000011111111000000000011111111110000000000111111110000000000111111111100000000000000

我尝试使用BigInteger,但是课程中的模块不允许我使用它,所以我必须用另一种方法解决问题。

如果没有BigInteger,你有什么建议可以解决这个问题吗?

问题出在

1011111111000000000011111111110000000000111111111100000000001111111111

是71位,而你做的是Convert.ToIn64(result, 2);,它会把它切成64位。如果输入和输出都是字符串,那么为什么要转换为Int64 (long)呢?而不是return result


编辑:刚刚看了Lasse V. Karlsen的评论,基本上说的是一样的

相关内容

  • 没有找到相关文章

最新更新