盒子
文章目录
  1. 概述
  2. 位运算概览
  3. LeetCode 精题
    1. 异或

位运算

我钟爱位运算,亦如炉石拿着最原始的卡组打着最艰难的怪……

概述

从现代计算机中所有的数据二进制的形式存储在设备中。即 0、1 两种状态,计算机对二进制数据进行的运算(+、-、*、/) 都是叫位运算,即将符号位共同参与运算的运算。

位运算概览

符号 描述 运算规则
& 两个位都为 1 时,结果才为 1
| 两个位都为 0 时,结果才为 0
^ 异或 两个位相同为 0,相异为 1
取反 0 变 1,1 变 0
<< 左移 各二进位全部左移若干位,高位丢弃,低位补 0
>> 右移 各二进位全部右移若干位,对无符号数,高位补 0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移)

LeetCode 精题

异或

(爱别人胜过爱自己)

  • $a$ $^$ $a$ $=0$: 自己异或自己等于 0

  • $a$ $^$ $0$ $=a$:任何数字和0异或还等于他自己

  • $a$ $^$ $b$ $^$ $c$=$a$ $^$ $c$ $^$ $b$;异或运算具有交换律

  • 只出现一次的数字