一: 计算机中的二进制
计算机以二进制表示数据,以表示电路中的正反。在二进制下,一个位只有 0 和 1 。逢二进一 位。类似十进制下,一个位只有 0~9 。逢十进一位。
二: 进制常用运算 (位运算)
与运算(&):将两个二进制数的对应位进行与操作,只有当两个位都为1时,结果为1。
或运算(|):将两个二进制数的对应位进行或操作,只要有一个位为1,结果就为1。
非运算(~):对一个二进制数的每个位取反,将1变为0,将0变为1。
异或运算(^):将两个二进制数的对应位进行异或操作,只有当两个位不同时,结果为1。
左移运算(<<):将一个二进制数的所有位向左移动指定的位数,右边空出的位用0填充。
右移运算(>>):将一个二进制数的所有位向右移动指定的位数,左边空出的位用原来的最高位填充。 这些二进制的运算在计算机的逻辑设计、编程和数据处理中经常使用。
无符号右移( >>> , 无符号右移就是右移之后,无论该数为正还是为负,右移之后左边都是补上 0 )
三: 标签记录的实现原理
基于(或)|,与+取反(&~) 去实现:
假设我们给用户添加的标签是一个数字 16 ,转换为二进制就是 10000 。
1.设置标签 使用 或(|) (参加运算的两个位只要有一个为 1 ,其值为 1 )
2.取消标签 与 + 取反(&~)(两位同时为 1,结果才为 1,否则为 0) 取消16这个标签
————————————————