位操作符的介绍和应用

位操作符有哪些?

在 c/c++ 中位操作符有一下几种

  1. & 代表 按位与
  2. | 代表 按位或
  3. ^ 代表 按位异或
  4. ~ 代表 按位取反
  5. << 是 左移操作符
  6. >> 是 右移操作符

那么什么叫做按位与呢?

按位与,可以拆分成 按位 和 与 这两个关键字

  • 按位 在计算机中数字(包括 int, char 类型)是以补码的的形式以二进制储存的,这里的位指的就是二进制的位 比如

    5 的二进制表示为 00000000 00000000 00000000 00000101 那么其中的 1 就是 位

  • 与 与 和 或 和 异或 都是一种计算的操作,下面会详细讲解

& 表示 按位与

指 两位都是 1 才为 1,一位是 0 才为 0

操作 位 位 位 位
1 0 1 0
& 0 1 1 0
—– — — — —
0 0 1 0

| 代表 按位或

指 一位是 1 就是 1,两位是 0 才为 0

操作 位 位 位 位
1 0 1 0
| 0 1 1 0
—– — — — —
1 1 1 0

^ 代表 按位异或

指 两位相同是 0,两位相异是 1

操作 位 位 位 位
1 0 1 0
^ 0 1 1 0
—– — — — —
1 1 0 0

~ 代表 按位取反

指 0 是 1,1 是 0

操作 位 位 位 位
1 0 1 0
~
—– — — — —
0 1 0 1

<< 是 左移操作符

指 二进制位向左移动,右边补 0 ,左边删去

操作 删 位 位 位 位 删
1 0 1 0
<< 1 0 1 0 0
—– — — — — — —
得到 : 0 1 0 0

>> 是 右移操作符

指 二进制位向右移动,左边补 符号位 ,右边删去

操作 删 位 位 位 位 删
1 0 1 0
>> 1 1 0 1 0
—– — — — — — —
得到 : 1 1 0 1