文章

40

粉丝

607

获赞

68

访问

418.2k

头像
1097负二进制
P1097
发布于2020年2月20日 13:06
阅读数 13.3k

模拟十进制转换二进制方法

以第一步为例:

要让被除数(这里的-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;
}

 

登录查看完整内容


登录后发布评论

1 条评论
admin SVIP
2020年2月20日 15:35

写的不错,感谢分享yes

赞(0)