获取一个正整数,输出其二进制反转形式的十进制的值

如 25 的32位二进制为   0000 0000 0000 0000 0000 0000 0001 1001

翻转后为                          1001 1000 0000 0000 0000 0000 0000 0000


对应十进制为  2550136832



# include <stdio.h>
# include <math.h>

int main()
{
	int num = 0;
	int sum = 0;
    int temp = 0;
	

	printf("please input one number\n");
	scanf_s("%d", &num);
	for (int b = 0; b < 32; ++b)
	{
		temp = ((num >> b) & 1);
		sum += pow((float)2, (31 - b)) * temp;   /*cpp中pow函数有类型的问题,所以对pow(x,y)中的x进行类型(double也行)强转;此外求和还可以利用位运算优化*/
		
	}

	printf("\n");
	printf("%u\n", sum);   /*一定是无符号输出 否则会超出有符号的最大值*/
	return 0;
}

优化如下


# include <stdio.h>  
# include <stdlib.h>  
# include <math.h>  

int main()
{
	int num = 0;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值