与运算
【与】运算符号为 & ,运算法则为遇0得0。也就是说只要有0,结果即为0。
举例:1001 & 1100
1 0 0 1
&
1 1 0 0
————
1 0 0 0
或运算
【或】运算符号为 | ,就是一个竖线,运算法则为遇1得1。也就是说,只要有1,结果就为1。
举例:1100 | 1010
1 1 0 0
|
1 0 1 0
————
1 1 1 0
非运算
【非】预算符号为 ~,就是一个波浪线,运算法则为按位取反,也就是遇1取0,遇0取1,即 ~1 = 0 , ~0 = 1;
举例:1001 & 1001
1 0 1 1
~
————
0 1 0 0
异或运算
【异或】运算符号为 ^,就是一个乘方符号,运算法则为相同取0,不同取1。异或运算,关键在异上面,异为1,否则为0。
举例:1001 & 1001
1 0 1
^
1 0 0
——
0 0 1
记忆方法:
异或指两个数是否不同吗?不同代表为真,即为1,相同为假,即为0。
同或指两个数是否相同吗?相同为真,即为1,不相同为假,即为0。
或:只要有1,另一个不管是否为真,结果都为1
异或就是再一个条件,其中一个是1(真),另一个必须是0(假),结果才为1。
二、^的规律(特点)
特点1、大小相同的数字异或为0。任何数字异或0均为本身(可以自己写两个数的二进制位进行验证)。因为大于0的数转换成二进制总有1,0^0=0,1^0为1,所以最终结果还是本身。
例如:1^1=0, 2^0=2 ,3^0=3
特点2、A^B^B = A 由1可得2 因为B^B=0 0^A=A
特点3、符合结合律和交换律
一些题型:
3、交换两个数(不能创建中间变量)
题目要求:不能创建中间变量交换两个数
思路:运用特点二A^B^B=A和特点三的交换律即可求解
#include<stdio.h>
int main()
{
int a = 0, b = 0;
a = a ^ b;
b = b ^ a;//b=b^ a^b=a
a = a ^ b;//a=a^ a^b=b
return 0;
}
其它题目
https://blog.csdn.net/m0_74044018/article/details/130195037
十进制后缀D,二进制后缀B,十六进制后缀H,八进制后缀O,无符号整数后缀U。如ida pro中0xD2u,表示D2是一个无符号16进制表示的字节数。中一个数字和十六进制数0xff或oxffffffff相与,表示取全一的那些微商的数字,其余位舍掉。
同使用的计算机语言有关,它们源于英文。B是二进制Binary的缩写。O是八进制Octal的缩写。Q是八进制Octal的缩写。为避免字母O误认作数字0,标识改为Q。D是十进制Decimal的缩写。