求123.6875的二进制
整数部位用除基取余法,小数部位用乘基取整法
#include <algorithm>
#include <iostream>
#include <string>
using namespace std;
int main() {
float s, ks;
int zs;
cin >> s;
zs = static_cast<int>(s);
ks = s - zs;
string pres, ffxs, ans;
while (zs) {
if (zs & 1) {
pres += '1';
} else {
pres += '0';
}
zs >>= 1;
}
while (ks) {
ks *= 2;
if (ks >= 1) {
ffxs += '1';
ks -= 1.0;
} else {
ffxs += '0';
}
}
reverse(pres.begin(), pres.end());
pres = pres + '.';
ans = pres + ffxs;
cout << ans << endl;
}