文章
40
粉丝
607
获赞
68
访问
418.2k
模拟十进制转换二进制方法
以第一步为例:
要让被除数(这里的-3)减去除数与商的乘积大于0,若小于0则商加1
(这里的-3/-2商为1,[ (-3) - (-2) * 1 ] = -1 < 0 则商需要加1,此时商为 1+1=2)
之后计算新商的余数存进数组
(新的余数为(-3)-(-2)* 2 = 1)
若有不对的地方希望各位同学指正!
#include <iostream>
using namespace std;
int main()
{
int a[150] = { 0 };
int n,temp;
while (cin >> n)//模拟十进制转换二进制
{
int i = 0;
while (true)
{
temp = n / (-2);
if (n - (-2 * temp) < 0)//判断被除数减去商与除数之积是否大于0
{
temp = temp + 1;//若被除数减去商与除数之积不大于则商加1
a[i++] = n - (-2 * temp);//将新商的余数存进数组
}
else
{
a[i++] = n % (-2);
}
n = temp;
if (n == 0) break;
}
for (int j = i-1;j >= 0;j--)//倒序输出数组
{
cout << a[j];
}
cout << endl;
}
return 0;
}
登录后发布评论
写的不错,感谢分享