mysql 使用位运算
来源:互联网 发布:搞笑电影推荐 知乎 编辑:程序博客网 时间:2024/06/05 17:00
如果你不知道什么是位运算的话, 那么请你先去看看基础的C语言教程吧。
与运算 a & b ,
或运算 a | b ,
异或运算 a ^ b ,
或者
你也可以将 与运算理解为 + 法
例如
1|2 = 3 (1+2 = 3)
1|2|4 = 7 (1+2+4 = 7)
将 异或运算理解为 - 法
例如
3^2 = 1 (3-2 = 1)
3^1 = 2 (3-1 = 2)
最后将 与运算 作为判断
例如
3&2 = 1 (3 = 1 + 2, 由 1和2组成 ,所以判断3&2 = 1 )
3&4 = 0 ( 3 没有由 4组成,所以判断3&4 = 0)
那么位运算有何用处呢, 例如 UNIX系统中的权限, 通常我们所知 权限分为 r 读, w 写, x 执行,其中 它们的权值分别为4,2,1, 所以 如果用户要想拥有这三个权限 就必须 chomd 7 , 即 7=4+2+1 表明 这个用户具有rwx权限,如果只想这个用户具有r,x权限 那么就 chomd 5即可
说道此处就要涉及到数据库了。
通常 我们的数据表中 可能会包含各种状态属性, 例如 blog表中 , 我们需要有字段表示其是否公开,是否有设置密码,是否被管理员封锁,是否被置顶等等。 也会遇到在后期运维中,策划要求增加新的功能而造成你需要增加新的字段。
这样会造成后期的维护困难,数据库增大,索引增大的情况。 这时使用位运算就可以巧妙的解决。
例如
<?php
define('B_PUBLIC',1); // 公开
define('B_PASSWORD',2); // 加密
define('B_LOCK',4); // 封锁
define('B_TOP',8); // 置顶
?>
-- 公开blog 给status进行或运算
UPDATE blog SET status = status | 1;
-- 加密blog 给status进行或运算
UPDATE blog SET status = status | 2;
-- 封锁blog
UPDATE blog SET status = status | 4;
-- 解锁blog
UPDATE blog SET status = status ^ 4;
--查询所有被置顶的blog
SELECT * FROM blog WHERE status & 8;
虽然节省了空间,但是由于没有办法对status字段使用索引,所以如何使用来优化查询才是最重点的。
与运算 a & b ,
或运算 a | b ,
异或运算 a ^ b ,
或者
你也可以将 与运算理解为 + 法
例如
1|2 = 3 (1+2 = 3)
1|2|4 = 7 (1+2+4 = 7)
将 异或运算理解为 - 法
例如
3^2 = 1 (3-2 = 1)
3^1 = 2 (3-1 = 2)
最后将 与运算 作为判断
例如
3&2 = 1 (3 = 1 + 2, 由 1和2组成 ,所以判断3&2 = 1 )
3&4 = 0 ( 3 没有由 4组成,所以判断3&4 = 0)
那么位运算有何用处呢, 例如 UNIX系统中的权限, 通常我们所知 权限分为 r 读, w 写, x 执行,其中 它们的权值分别为4,2,1, 所以 如果用户要想拥有这三个权限 就必须 chomd 7 , 即 7=4+2+1 表明 这个用户具有rwx权限,如果只想这个用户具有r,x权限 那么就 chomd 5即可
说道此处就要涉及到数据库了。
通常 我们的数据表中 可能会包含各种状态属性, 例如 blog表中 , 我们需要有字段表示其是否公开,是否有设置密码,是否被管理员封锁,是否被置顶等等。 也会遇到在后期运维中,策划要求增加新的功能而造成你需要增加新的字段。
这样会造成后期的维护困难,数据库增大,索引增大的情况。 这时使用位运算就可以巧妙的解决。
例如
<?php
define('B_PUBLIC',1); // 公开
define('B_PASSWORD',2); // 加密
define('B_LOCK',4); // 封锁
define('B_TOP',8); // 置顶
?>
-- 公开blog 给status进行或运算
UPDATE blog SET status = status | 1;
-- 加密blog 给status进行或运算
UPDATE blog SET status = status | 2;
-- 封锁blog
UPDATE blog SET status = status | 4;
-- 解锁blog
UPDATE blog SET status = status ^ 4;
--查询所有被置顶的blog
SELECT * FROM blog WHERE status & 8;
虽然节省了空间,但是由于没有办法对status字段使用索引,所以如何使用来优化查询才是最重点的。
- mysql 使用位运算
- mysql 使用位运算
- mysql 使用位运算
- mysql位运算
- 位运算的使用
- 位运算的使用
- 位运算使用技巧
- 位运算使用场景
- mysql位运算的应用
- 使用位运算或使用
- 使用位运算加速乘除法运算
- 使用位运算控制权限
- 各种位运算的使用
- 使用位运算节省计算
- 位运算的实际使用
- 位运算符的使用
- 位运算的巧妙使用
- 使用位运算解决subsets
- 使用Struts2.2.3.1出现的问题
- 语法分析
- 平台调用P-INVOKE(三)--(封送结构体)
- 批处理及PHP编写目录下的统计文件行数及个数
- 万能指南针(android版本)
- mysql 使用位运算
- Linux下QT编程中文显示乱码解决
- vs 2010的帮助文件的重新安装
- js实现一个简单的锁屏功能
- javascript 模仿windows拖动 封装类
- calibre lvs 问题之 netlist 器件类型识别
- 使用JAVA对字符串进行DES加密解密
- ISO8859-1、UTF-8 与GB2312
- WPF中实现Timer 事件