C语言里面 << 和 | 的运用
引言
本人在写代码的时候,经常需要将1和0进行拼凑起来,因为我们在现实生活中用的都是10进制的数字,所以我们常常会将1和0与10进制的形式联想起来,那么有什么方式,当我们得到”对”,即1,得到“错”即0。将这些东西按照二进制的形式表达出来呢?
在这里我做个比方:假如我得到了两个对,两个错,按照顺序排列就是“对对错错”,按照01的ascii码表示就是0x31 0x31 0x30 0x30,这样的话会浪费不必要的空间我要的是0x0C即0x1100,这样很短的东西就可以表示我想要的东西了。这个时候我就要用到c语言里面的 << 和 |。
接下来我来介绍下 << 和 | 的用法:
在这里我拿 0<<1|1 这段代码进行举例说明
<< 1—— 把已有的位整体向左挪一格,最低位空出 0
例:原有0000 0001变成0000 0010
| 1—— 把新来的 1 按位或填到最低位
例:0000 0010 | 1→0000 0011若新比特是 0,就写
| 0,最低位保持 0所以
byte = (byte << 1) | new_bit;
例子:
1️⃣ 假设你陆续收到这样 8 个比特(按顺序):
第1个 → 1
第2个 → 0
第3个 → 1
第4个 → 0
第5个 → 0
第6个 → 0
第7个 → 0
第8个 → 02️⃣ 把它们拼成一个字节的过程:
用 byte = (byte << 1) | 新比特 一步一步来:

最后得到二进制:1010 0000
十六进制:0xA0
十进制:160
