将一个数字通过指定进制按位逆序(直接覆盖原数)void sysReverse(int &, int );

将一个数字通过指定进制按位逆序(直接覆盖原数)

#include<iostream>
using namespace std;
//将一个数字通过指定进制按位逆序(直接覆盖原数)
void sysReverse(int &num, int n) {
	int tmp = 0;
	while (num) { 
		tmp += num % n;
		num /= n;
		num ? tmp *= n : tmp;
	}
	num = tmp;
}
void Print_2(int num) {
	if (num != 1) {
		Print_2(num / 2);
	}
	printf("%d", num % 2);
}
int main() {
	int num1, num2, num3, num4;
	num1 = num2 = num3 = num4 = 1000;
	printf("2进制输出%d为:", num1);
	Print_2(num1);
	sysReverse(num1, 2);
	printf("\n2进制下%d按位逆序为:", num1);
	Print_2(num1);
	cout << "\n\n";

	printf("8进制下输出%d为:%o\n", num2, num2);
	sysReverse(num2, 8);
	printf("8进制下按位逆序为:%o\n\n", num2);

	printf("10进制下输出%d为:%d\n", num3, num3);
	sysReverse(num3, 10);
	printf("10进制下按位逆序为:%d\n\n", num3);

	printf("16进制下输出%d为:%X\n", num4, num4);
	sysReverse(num4, 16);
	printf("16进制下按位逆序为:%X\n\n", num4);
	system("pause");
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值