c++位运算相关题目

在这里插入图片描述
逻辑移位:移位所缺少的数字用“0”来填充
算术移位:移位所缺少的数字用符号位来填充
第一题、题解:如何找数组中唯一成对的那个数
异或能消除重复的数,重复的数出现偶数次,将已知的数和数组中所有的数都取异或就得到为出现奇数次的数
在这里插入图片描述

第二题、找出落单的数,这样编程就对了
直接全部的数异或
在这里插入图片描述

第三题、一题三解:计算二进制中1的个数
1、数不变,与之异或的数移动
2、数移动与1异或
3、x&(x-1)每次消去一个1,直至x为0结束
在这里插入图片描述

第四题、一条语句判断整数是不是2的整数次方
x&(x-1)只进行一次
在这里插入图片描述

第五题、位运算思维:将整数的奇偶位互换
整数先与0x55555555取奇数位,与0xaaaaaaaa去偶数位,奇数位左移一位,偶数位右移一位,求异或
在这里插入图片描述

第六题、乘2挪整:二进制表示浮点实数
一般解法
在这里插入图片描述

第七题、编程实践:出现k次与出现1次
k进制不进位加法,先转换为相应的的进制,然后累加,去最终值
在这里插入图片描述

#include<iostream>
using namespace std;
int N=10;
int result;
int arr[]={232,232,232,111,111,111,2,3434,3434,3434,3434};
int num[32];
int main()
{
	for(int i=0;i<N;i++)
	{
		int j=0;
		while(arr[i]!=0)
		{
			
			num[j]+=arr[i]%3;
			arr[i]/=3;	
			num[j]%=3;
			j++;
		} 
	}
	for(int i=32;i>=0;i--)
	{
		result=result*3+num[i];
	}
	cout<<result;
	return 0;
} 
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值