按位与,按位异或,按位取反

**& 按位与,相同的不变,否则都算成0

| 按位或,
^ 按位异或,不相同的都算成1**
PHP按位与或 (^ 、&)运算也是很常用的逻辑判断类型,有许多的PHP新手们或许对此并不太熟悉,今天结合一些代码对PHP与或运算做些介绍,先说明下,在PHP中,按位与主要是对二进制数操作:

<?php
$a = 1;
$b = 2;
$c = $a^b;
echo $c // 3
?>

十进制1换算成二进制为:00000001
十进制2换算成二进制为:00000010
按位^ 00000011,就是把不相同的都算成1,然后:

<?php
$a = 1;
$b = 2;
echo $a & $c; // 1
?>

十进制3换算成二进制为:00000011
十进制1换算成二进制为:00000001
按位& 00000001,就是各个位数相同的不变,否则都算成0,按位“&”后返回值是没意义的,主要是用来判断$a 是否存在于 $c,权限用法比较多:

<?php
$my_privilege = 15; // 1+2+4+8 拥有全部权限
$Pri = ‘‘;
$privilege_arr = array(8=>‘增‘, 4=>‘删‘,2=>‘改‘,1=>‘查‘);
foreach($privilege_arr as $k =>$v){
$k & $my_privilege && $Pri .= ‘我有‘.$v.‘的权力<br>‘;
}
echo $Pri;
?>

通过一个值就可以区分出很多字段
> $a = hexdec(‘0x10c04000‘);
> $b = ($a & 0x0FF00000) >20;
> $c = ($a & 0x000FF000) >12;
> var_dump($a, $b, $c);
> 输出:
> int 281034752
> int 12
> int 4

时间: 2024-11-10 07:14:59

按位与,按位异或,按位取反的相关文章

Hive入门到剖析(一)

1 Hive简介 1.1 Hive定义 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能. 本质是将SQL转换为MapReduce程序. 1.2 为什么使用Hive 1.面临的问题 人员学习成本太高 项目周期要求太短 我只是需要一个简单的环境 MapReduce  如何搞定 复杂查询好难 Join如何实现 2.为什么要使用Hive 操作接口采用类SQL语法,提供快速开发的能力 避免了去写MapReduce,减少开发人员的学习成本 扩展

mysql位运算

1.MOD(X1,X2) 求余运算,返回余数同"%" 2.X1 DIV X2 除法运算返回商,同"/" 3.如果除数为0,那么结果为NULL. 4.<=>和= 是一样的,也是用来判断操作数是否相等的.不同的是<=>可以用来判断null,=不能判断null. 例:select null<=>null 结果1 逻辑运算符 1.与&&或and:所有操作数不为0且不为null时,结果为1,任何一操作数为0,结果为0,存在一

C#学习——简介(第一天)

一.控制台输出 在控制台输出: 1 console.writeline(); 2 console.readkey(); 加上后面一句是为了保证弹窗不会一闪而过. 二.注释 1.单行注释: 1 //int a=90: 快捷键:Ctrl+K+c 2.多行注释 2 /* int a=12; float b=10.2; */ 快捷键: /*  */ 三.数据类型 1.值类型 datetime  事件类型 enum      枚举类型 struct      结构类型 int.float.double  

Python学习笔记三:数据类型

数据类型 整数int 32位机器,-2**31~2**31-1,即-2147483648~2147483647(4亿多) 64位机器,-2**63~2**63-1,非常大了. 长整型long 没有位数,取决于机器内存.整数发生溢出会自动转换为长整型,一直为int,没有long的概念.Python 2.2以上使用type(数字)来验证. 浮点型(float) 不是小数,表示形式是小数,但小数不止是浮点数, 复数 x+yj 布尔值 真或假,1或0,True或False 字符串 "hello worl

Hive 内建操作符与函数开发——深入浅出学Hive

第一部分:关系运算 Hive支持的关系运算符 ?常见的关系运算符 ?等值比较: = ?不等值比较: <> ?小于比较: < ?小于等于比较: <= ?大于比较: > ?大于等于比较: >= ?空值判断: IS NULL ?非空判断: IS NOT NULL ?LIKE比较: LIKE ?JAVA的LIKE操作: RLIKE ?REGEXP操作: REGEXP ?等值比较: = 语法:A=B 操作类型:所有基本类型 描述: 如果表达式A与表达式B相等,则为TRUE:否则为

数据运算

数据运算: + - * / % ** // 取整数,返回商的整数部分,如9/2输出结果4,9.0/2.0输出结果4.0 >>> 9//24>>> 9.0//2.04.0>>> 9.0//2.53.0>>> 9.0//2.43.0>>> 9.0//2.33.0>>> 9.0//2.24.0>>> 9.0//2.14.0>>> ==!=  <>>&l

Linux shell脚本编程入门(二) 循环语句

前面有了变量的概念和逻辑运算符,就可以写判断语句了,不过这里注意中括号的两边必须得留空格,不然报错. 运算符 赋值, 用 let 语句, 如 let "a=1" 算数运算, 支持 +  -  *  /  %(模运算)  **(幂运算) 位运算符, 支持 <<(左移)  >>(右移)  &(按位与)  |(按位或)  ~(按位取反)  ^(按位异或) if / then / else 语句 先举个栗子呗~ #!/bin/bash read var1 if

Java日志&mdash;&mdash;2016年5月30日

1. 局部变量必须初始化,可以定义的同时初始化,也可以定义完成之后进行初始化. 2. Java7新特性:数字之间可以使用"_"连接,eg:23_44_5 = 23445,0B1101_1010 = 0B11011010 3. 二进制表示0b开始:八进制以0开始:十六进制以0x开始. 4. char类型可以直接赋值十进制.二进制.八进制或十六进制的字面量,编译器自动将字面量转化为char类型. 5. char类型也可以使用四位十六进制表示Unicode字符,格式为char c = '\u

我的MYSQL学习心得(五)

我的MYSQL学习心得(五) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) MYSQL中的运算符很多,这一节主要讲MYSQL中有的,而SQLSERVER没有的运算符 安全等于运算符(<=>) 这个操作符和=操作符执行相同的比较操作,不过<=>可以用来判断NULL值. 在两个操作数均为NULL时,其返回值为1而不为NULL: 而当一个操作数为NULL时,其返回值为0而不为NULL. 下面分别是 SELECT N