前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【c语言练习】新手必会操作符练习(& | ^ ~ >>) 不讲废话!简洁易看!(所有题目只用最简解法)

【c语言练习】新手必会操作符练习(& | ^ ~ >>) 不讲废话!简洁易看!(所有题目只用最简解法)

作者头像
用户11292525
发布2024-09-26 11:09:07
580
发布2024-09-26 11:09:07
举报
文章被收录于专栏:学习

虽然只有4题!但绝对精品!!

1.单身狗

题目分析

找出数组1,2,3,4,5,1,2,3,4中的单身狗,单身狗是指数组中的只出现过一次的数字。

思路:

代码语言:javascript
复制
n^n=0   n^0=n

具体代码:

代码语言:javascript
复制
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

int func(int arr[], int len)
{
	int ret = 0;
	for (int i = 0; i < len; i++)
	{
		ret ^= arr[i] ;
	}
	return ret;
}
int main()
{
	int arr[] = { 1,2,3,4,5,4,3,2,1 };
	int len = sizeof(arr) / sizeof(arr[0]);
	int ret=func(arr, len);
	printf("%d", ret);
	return 0;
}

运行结果:

2. 统计二进制中1的个数

思路:

代码语言:javascript
复制
 n = n & (n - 1) 每进行一次使得n的二进制最右边的1消失

具体代码:

本题以具体数字7(0000 0111)为例(咳咳随便写的数字,你想其他的数字也行)

代码语言:javascript
复制
int main()
{
	int a = 7;
	int count = 0;
	while(a!=0)
	{ 
		a = a & (a - 1);
		count++;
	}
	printf("%d", count);
	return 0;
}

运行结果:

3.分别输出一个数的二进制中的偶数和奇数二进制序列

思路:

代码语言:javascript
复制
n & 1   得到某个数n的二进制最后一位(是1或0)
n >> 1  n向右平移一位

一个数n有32个比特位

(从右往左)偶数是从第30个开始,分别让偶数位右移到n的二进制最后一位

(如左边第一位偶数用(n>>30)&1 )

同理,(从右往左)奇数是从第31个开始,分别让奇数右移到n的二进制最后一位

(如左边第1位奇数的用(n>>31)&1 )

具体代码:

别管,我爱7嘻嘻,还是以具体数字7(0000 0111)为例子。

代码语言:javascript
复制
int main()
{
	int a = 7;
	//偶数序列
	for (int i = 30; i >= 0; i -=2)
	{
		printf("%d", (a >> i) & 1);
	}

	printf("\n");

	//奇数序列
	for (int j = 31; j >= 1; j -= 2)//注意这里奇数最后一位的i是处在1的位置
	{
		printf("%d", (a >> j) & 1);
	}
	return 0;
}

运行结果:

4.求两个数的二进制不同位的个数

题目分析:

如7(0000 0111)和 15(0000 1111),这俩数只有1位二进制位上的数不同

思路:

算是一个小综合了,结合了以上好几道题的思路

代码语言:javascript
复制
两个数m和n
m ^ n  可以得到两个数不同的位数(这个数设为a)
a & (a-1)  统计a中1的个数

具体代码:

代码语言:javascript
复制
int main()
{
	int m = 7;
	int n = 15;
	int a = m ^ n;//此时a上的是1的位数就是这两个数不同的二进制位
	int count = 0;//用来计数的

	while (a)
	{
		a &= (a - 1);
		count++;
	}
	printf("%d", count);

	return 0;
}

运行结果:

总结

这4题都能摸透,那你对操作符的掌握可谓炉火纯青啦

恭喜你哦~

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-08-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.单身狗
    • 题目分析:
      • 思路:
        • 具体代码:
          • 运行结果:
          • 2. 统计二进制中1的个数
            • 思路:
              • 具体代码:
                • 运行结果:
                • 3.分别输出一个数的二进制中的偶数和奇数二进制序列
                  • 思路:
                    • 具体代码:
                      • 运行结果:
                      • 4.求两个数的二进制不同位的个数
                        • 题目分析:
                          • 思路:
                            • 具体代码:
                              • 运行结果:
                              • 总结
                              领券
                              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档