栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

按位操作符的一些小应用

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

按位操作符的一些小应用

一、统计一个数中的二进制中的1的个数:

方法:与十进制的方法类似,都是利用了除整和取余的方法,不同的是二进制取余得到的是0,1

利用这个方法不能进行负数的取1的运算,那么用位操作符进行运算,将要计算的数跟1相与如果得到是1那么就留下,然后利用循环将数右移一位,就可以继续进行操作,

二、不创建变量将两个数进行交换

可以利用加减法(如果超出范围就不行),这时可以利用异或的操作进行

正数的原码,补码,反码都相同

#define _CRT_SECURE_NO_WARNINGS
#include
 
 //统计二进制中的1的个数 异或和除整取余
int main() {
	// 类似于十进制的取余在整除一样
	int num = 0;
	scanf("%d", &num);
	int i = 0;
	while (num) {
		
		if (num % 2 == 1) {
		i++;
		}
		
		num = num / 2;
	}
	printf("%d", i);
	// 异或进行 
	int num = 0;
	int count = 0;
	scanf("%d", &num);
	for (int i = 0; i <32 ; i++){
		if ((num>>i) & 1 == 1) {
		count++;
	}
		

	}
	printf("%d", count);
	



}

 //不创建变量交换两个变量的值 有加减法和异或的操作法
	 int main() {
	 int a = 3;
	 int b = 5;
	 a = a + b;
	 b = a - b;
	 a = a - b;
	 printf("a=%d,b=%d", a, b);
	 a = a ^ b;
	 b = a ^ b;
	 a = a ^ b;
	 printf("a=%d,b=%d", a, b);
 }

// 反码,补码,原码的相关概念

负数的补码为反码加一,最高位为符号位1代表的是负数

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/698820.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号