任务:表达式值的二进制表示法中包含多少个单位:4^2020 + 2^2017 - 15?
因为数字大于允许的双精度值,所以我的程序输出错误答案:vr = infinity, count = 1。(count 必须是 2015)
double vr = Math.Pow(4, 2020) + Math.Pow(2, 2017) - 15; // наше выражение
string b = Convert.ToString((int)vr, 2);
int count = 0; //счётчик единиц
for (int i = 0; i < b.Length; i++)
{
if (b[i] == '1')
{
count++;
}
}
Console.WriteLine(count);
@MBo!在数字 4 的二进制表示法中,有一个单位(100),无论您不提高它的整数次方,都会保留一个单位。例如:4^2=16(10000)。双打也是如此。让我们立即将 4^2020 转换为 2^4040。
接下来,二进制。如果您将一个较小的相同类型的数字添加到一个带零的形式 1 中,您将得到 2 个,例如:10000+100=10100。现在我们求一个大数和15的差,比如:1000 0000 0000-1111=111 1111 0001,也就是这样的减法加了Z-4个单位,其中Z是数中最小单位的度数,等于较小数字的次数。总答案是2+Z-4=Z-2
答案是:2015 年。
确实,有一个错误,甚至是两个错误。
使用 BigInteger 类的解决方案: