二进制
计算机是使用二进制进行存储和计算的。二进制运算遵循的规则是“进二”。
原码,指一个二进制数左边加上符号位后所得到的码,且当二进制数大于0时,符号位为0;二进制数小于0时,符号位为1;二进制数等于0时,符号位可以为0或1。
反码:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
补码:正数的补码与原码相同,负数的补码是其对应正数二进制所有位取反后加1。
在计算机中通常使用补码进行储存。
位运算
左移右移运算:
在二进制运算中,这东西叫做“左移”“右移”运算,顾名思义,就是将一个二进制数向左或向右移动\(k\)位,就是给一个数乘 \(2^k\)或者除 \(2^k\) (末尾1不计)。
取反运算:
“~”运算又称取反运算,就是对一个二进制数按位取反。
\[~x=-x-1\]
与运算:
“&”运算又称与运算也是一种逻辑运算符,对于二进制运算来说,“&”运算的意义是对于两个二进制数的每一位,如果这一位都是\(1\),那么这一位为
,否则这一位为 \(0\)。
我们可以用 & 运算判断一个数是奇数还是偶数,当 \(x\) 为奇数时, \(x\) 二进制下的第 \(0\) 位一定是 \(1\) ,否则为\(0\) 。我们让\(x\& 1\),就可以知道\(x\) 的奇偶性了。
或运算:
或运算又称“|” 运算也是一种逻辑运算符,对于二进制运算来说,“|” 运算的意义是对于两个二进制数的每一位,如果这两个数此位有一个 \(1\) 那么此位就是 \(1\) ,否则为 \(0\) 。
通过对这两个运算的观察,我们可以发现一个规律:
\[\begin{array}{l}
x\& y < = x\\
x|y > = x
\end{array}\]
异或运算:
异或运算即“^”运算定义是对于两个二进制数的每一位,如果相同则为\(0\) ,否则为 \(1\) 。
首先显而易见的是一个数异或他自己肯定是得\(0\) 的
其次对于一个形如\(2*n\)的数\(x\),x ^ 1 = x + 1而对于一个形如\(2*n+1\)的数\(x\),x ^ 1 = x - 1
然后异或运算满足以下交换律:
x^y=z那么于y^z=x,x^z=y
运算符的优先级
加减运算>移位运算>比较大小运算>与运算 >异或运算>或运算
待会补充
转自:https://www.luogu.org/blog/chengni5673/er-jin-zhi-yu-wei-yun-suan
文章评论