位运算
>> 右移:
其实上看起来是整体降了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