如果你不知道什么是位运算的话, 那么请你先去看看基础的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字段使用索引,所以如何使用来优化查询才是最重点的。

mysql 使用位运算相关推荐

  1. SQL位运算查询 - ‘‘ 举例

    需求举例: 某动物园对动物的投喂有以下规定:      苹果可以去投喂鹿.猴子.熊猫      竹子可以去投喂熊猫.竹鼠      树叶可以去投喂兔子.鹿 现在饲养员携带苹果.树叶,他可以投喂哪些动物 ...

  2. mysql 矩阵运算_HDU 2276 Kiki amp; Little Kiki 2 (位运算+矩阵快速幂)

    HDU 2276 Kiki Little Kiki 2 (位运算矩阵快速幂) ACM 题目地址:HDU 2276 Kiki Little Kiki 2 题意 : 一排灯,开关状态已知,每过一秒:第i个 ...

  3. mysql位运算 索引_mysql 使用位运算

    如果你不知道什么是位运算的话, 那么请你先去看看基础的C语言教程吧. 与运算 a & b  , 或运算 a | b , 异或运算 a ^ b , 或者 你也可以将 与运算理解为 + 法 例如 ...

  4. 【mysql】位运算符

    文章目录 1. 位运算符 1.1 按位与运算符 1.2 按位或运算符 1.3 按位异或运算符 1.4 按位取反运算符 1.5 按位右移运算符 1.6 按位左移运算符 2. 运算符的优先级 3. 练习 ...

  5. 漫画:三分钟学习一道位运算的面试题,万一遇到了呢?

    今天是小浩算法"365刷题计划"第60天.分享一道比较简单但是很经典的题目.话不多说,直接看题. 01 PART 2的幂 这道题,大家先想一想是用什么思路进行求解? 第231题:给 ...

  6. 位运算 位运算应用

    本页目录 位运算分为2个大类 位于 &(一0则0) 位或| (双0则0) 异或 ^(互异则1) 利用异或可实现一个小面试题,如何不添加变量,实现数据的替换 按位取反 ~ 左移 << ...

  7. c语言位运算试题及解析,C语言面试题分类-位运算

    1.不用临时变量交换两个整数. a = a ^ b; b = a ^ b; a = a ^ b; 2.实现一个函数,输入一个整数,输出该数二进制表示中1的个数.例如9的二进制是1001,则输出2. i ...

  8. python中不同进制的整数之间可以直接运算_Python 进制转换、位运算

    一.进制转换 编程用十进制,十进制转换为二进制.八进制.十六进制 In [135]: bin(23) Out[135]: '0b10111' In [136]: oct(23) Out[136]: ' ...

  9. python isodd()判断奇偶_位运算(1的个数;2.判断奇偶)

    1. 1的个数 int NumberOf1(intn){int count = 0;while(n) {++count; n=(n-1)&n; } } 同样一个问题,位运算可以提高程序的运行效 ...

最新文章

  1. python接收输入的一行字符只统计数字的个数,Python(统计字符),python实例,输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数...
  2. python综合作业题目_python作业 1、2、3 题
  3. python版本升级后编译_python学习笔记(7)--python版本升级
  4. QT的QMimeDatabase类的使用
  5. pySpark环境搭建
  6. 聊聊高并发(二)结合实例说说线程封闭和背后的设计思想
  7. 牛逼!支付宝高级Java三面题目:线程锁+事务+雪崩+Docker等
  8. Memcached与Redis的区别和选择
  9. javaweb增删改查实例_JavaWeb图像可视化管理系统之后台搭建(二)用户管理与增删改查(内含代码)...
  10. 《30天自制操作系统》03_day_学习笔记
  11. javafx实现简单的计时器
  12. 30-40W/年,某银行招聘架构设计岗(地点:上海)
  13. 上海小i机器人创始人:并非炒作 Siri几乎完全侵权
  14. 零基础如何学 Web 前端开发?
  15. 编写一个程序,提示用户输入以兆位每秒(Mb/s)为单位的下载速度和以兆字节(MB)为单位的文件大小。程序中应计算文件的下载时间。
  16. 牛客网 SQL17 10月的新户客单价和获客成本
  17. incrby redis 最大值_redis incr incrby decr decrby命令
  18. 键盘连接在计算机的,技巧:如何在计算机键盘上输入连字符和破折号?
  19. 云计算机社团,【社联】云社团丨以声传情,以舞会友(第一期)
  20. printf函数打印

热门文章

  1. 我想成为一名计算机管理员英语作文,我想成为一名老师英语作文4篇
  2. c语言编程学生管理系统的代码,C语言学生管理系统源代码.doc
  3. php 开发百度聚合,php利用百度javascript API实现导航
  4. 直接插入排序与希尔排序
  5. labview简易计算机实验报告,labview实验报告..doc
  6. java8 时间加一秒_年货买瓜子有讲究!这些加了“料”的瓜子不安全!
  7. 齐次坐标的理解(1)
  8. GitHub上中国顶尖大学的课程资源共享计划
  9. 基于U-Net系列算法的医学图像分割(课程设计)
  10. C++ char 与uchar区别