位运算相关笔记2024/1/23

本文介绍了C++中的位运算符如右移、左移、按位与、按位或和异或,以及它们在处理数字逻辑、奇偶性检测和键盘输入中的应用。通过实例演示如何使用位运算解决小问题,如找出键盘输入中单独出现的整数。
摘要由CSDN通过智能技术生成

位运算

>> 右移:

其实上看起来是整体降了2的一次方——> val>>n 将val/2的n次方

注意保持符号位不变。

为正数时, 符号位为0,最高位补0;为负数时,符号位为1,最高位是补0或是补1

<< 左移:

同理和右移一样,原数乘上2的n次方

但是需要注意的是左移出来的结果值可能会改变正负性

&  按位与:

*拓展用法:奇偶判断——>奇数 (val & 0x1) == 1

                                           偶数 (val & 0x1) == 0

*注意优先级 需要加括号!

|   按位或:

*拓展用法:窗口是否有 最大化(MAX) 最小化(MIN) 关闭(CLOSE)  按钮的判断情况

后续做项目或者传协议可能会大量使用到

^  异或:

规律背过:

0异或任何数     结果为0

相同变量异或   结果为0

小习题:键盘输入五个整型 只有一个是单独出现 其余皆为成对出现 找出单独数↓

#define _CRT_SECURE_NO_WARNINGS
#include<bits/stdc++.h>
#include<stdio.h>
using namespace std;

void test01()
{
	//从键盘输入5个整型
	int a, b, c, d, e;
	scanf("%d%d%d%d%d", &a, &b, &c, &d, &e);
	int val = a^ b^ c^ d^ e;
	printf("%d\n", val);
}
int main()
{
	test01();
	return 0;
}

~  取反:

不管符号位 统统取反 目前应用不大

笔记时间2024/1/23

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值