操作符及练习

本文探讨了计算机存储中整数的补码表示,并介绍了位操作符如++、位移和求二进制中1的个数的方法。通过示例展示了如何计算两个数二进制不同位的个数、打印整数二进制的奇数位和偶数位,以及统计二进制中1的个数。此外,还提供了不使用额外变量交换两个整数的技巧。
摘要由CSDN通过智能技术生成

计算机存储数字时存储的全是补码

++运算符分为前置++和后置++,

前置++:先加1,后使用,即先使用变量中内容,然后给结果加1

后置++:先使用变量中内容,整个表达式结束时,给变量加1

逗号表达式,取最后一个表达式的值。
移位操作符

左移操作符<< 左边抛弃、右边补0
右移操作符>>

位操作符

求一个整数存储在内存中的二进制中1的个数

sizeof和数组

逻辑操作符 逻辑与,逻辑或

  • 整形提升*

练习
1.求两个数二进制中不同位的个数。编程实现:两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
输入例子:1999 2299输出例子:7
思路

  1. 先将m和n进行按位异或,此时m和n相同的二进制比特位清零,不同的二进制比特位为1
  2. 统计异或完成后结果的二进制比特位中有多少个1–>转化为求一个数存储在内存中的二进制1的个数
int num(int i, int j)
{
	int count = 0;
	int tmp = i^j;//^异或操作符 相同则为0,不同为1
	while (tmp)
	{
		count++;
		tmp = tmp&(tmp - 1);//按位与多少次 就有 多少个1 
		
	}
	return count;
}
int main()
{
	int i = 1999; //011111001111
	int j = 2999; //101110110111
	int result = num(i, j);
	printf("%d\n", result);
	system("pause");
	return 0;
}

2.打印整数二进制的奇数位和偶数位。获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列

在这里插入代码片

3.统计二进制中1的个数。即写一个函数返回参数二进制中 1 的个数。

int main()
{
	int num = 10; //   x 0000 0000 0000 0000 0000 0000 0000 1010
    int count = 0;// x-1 0000 0000 0000 0000 0000 0000 0000 1001&
	              //     0000 0000 0000 0000 0000 0000 0000 1000   
	              //   x 0000 0000 0000 0000 0000 0000 0000 1000 
	              // x-1 0000 0000 0000 0000 0000 0000 0001 0000&
	while (num)   //     0000 0000 0000 0000 0000 0000 0000 0000
	{
		num = num&(num - 1);//按位与多少次,就有多少个1
		count++;
	}
	printf("二进制中1的个数 %d \n", count);
	system("pause");
	return 0;
}

4.交换两个变量(不创建临时变量)不允许创建临时变量,交换两个整数的内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值