c# - 将 NOT 运算符应用于非常大的二进制数(1011111111000000000011111111110000000000111111111100000000001111111111)
问题描述
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 中引入一个数字并应用 not 运算符,例如 ~00110001 或 ~10 ,我得到正确的结果,但是当我引入一个非常大的二进制数时,例如:
10111111110000000000011111111110000000000111111111100000000001111111111 结果不是“10000000011111111110000000000111111111100000000010001”。
我尝试使用 BigInteger,但课程中的模块不允许我使用它,所以我必须以另一种方式解决问题。
你有什么建议如何在没有 BigInteger 的情况下解决这个问题?
解决方案
问题在于
1011111111000000000011111111110000000000111111111100000000001111111111
是 71 位,而你正在做Convert.ToIn64(result, 2);
的,就是将它减少到 64 位。如果输入和输出都是字符串,那么为什么还要转换为 Int64 (a long
)?而只是return result
编辑:刚刚看到Lasse V. Karlsen的评论基本上是一样的
推荐阅读
- apache-zookeeper - 警告“可能的客户端已关闭套接字”后,giraph 仅在大图上失败
- .htaccess - 添加letsencrypt异常htaccess
- angular - 普瑞蒙
: 排序包含'-'的数据 - firebase - 使用 Firebase Admin SDK 更新用户时超出配额 - 我如何请求更多?
- python - 矩形的 QGraphicsItem 交互式调整大小
- java - 尝试在 appDataFolder 中获取文件列表时出现 GoogleAuthIOException
- python - 在 python 中为 format 提供多个参数的选项
- symfony - 我可以在不从头开始的情况下将现有的 zend 项目迁移到基于 symfony 的项目吗?
- java - Netty 关闭/停止 UDP 服务器
- python - 在哪里部署 Python Flask-SocketIO Webapp