.
, (, IEEE 754) 2 N N ( ).
,
unsigned N = ...;
double d = std::pow(2.0, N);
std::stringstream str;
str << std::fixed << std::setprecision(0) << d;
std::string s = str.str();
2 N N.
, , 2 N (N > 0) ...0 , , 1 1 2 ( ). , 2 N + k k = -2, -1,0, + 1,
s[s.size() - 1] += k;
, 2 ...98, , k = + 2, + 3
if ((s[s.size() - 1] += k) > '9')
{
s[s.size() - 1] -= 10;
++s[s.size() - 2];
}
1 . ( ).
, 2 ...02, k = -3, -4
if ((s[s.size() - 1] += k) < '0')
{
s[s.size() - 1] += 10;
--s[s.size() - 2];
}
, 2 ( pow(2, n + 1) - 2). 48 .