sun博客

记录点滴!

与运算
【与】运算符号为 & ,运算法则为遇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的缩写。

发表评论

邮箱地址不会被公开。 必填项已用*标注