PHP中为位运算符(几乎很少用)

PHP语言里的位运算符&、|、^ 、~、〈〈 、〉〉

"&" 按位与运算    按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0。参与运算的数以补码方式出现。
例如:9&5可写算式如下:

      00001001        (9的二进制补码)

     &00000101        (5的二进制补码)

      00000001        (1的二进制补码)

<?php
$a = 9;
$b = 5;
echo sprintf("%b", $a&$b);
?>
"|" 按位或运算按位或运算符“|”是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。
例如:9|5可写算式如下:

    00001001

   |00000101

    00001101        (十进制为13)可见9|5=13

<?php
$a = 9;
$b = 5;
echo sprintf("%b", $a|$b)."\n"; //二进制
echo sprintf("%d", $a|$b)."\n"; //十进制
"^" 按位异或运算   按位异或运算符“^”是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。参与运算数仍以补码出现,例如9^5可写成算式如下:
     00001001

    ^00000101  

     00001100       (十进制为12)

<?php
$a = 9;
$b = 5;
echo sprintf("%b", $a^$b)."\n"; //二进制
echo sprintf("%d", $a^$b)."\n"; //十进制
"~" 求反运算求反运算符~为单目运算符,具有右结合性。其功能是对参与运算的数的各二进位按位求反。
例如~9的运算为:

    ~(0000000000001001)结果为:1111111111110110

<?php
$a = 9;
$b = 5;
echo sprintf("%b", ~$a)."\n"; //二进制
"〈〈" 左移运算左移运算符“<<”是双目运算符。其功能把“<< ”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。
例如:

    a<<4

指把a的各二进位向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。 

<?php
$a = 3;
$temp = $a<<4;
echo sprintf("%d", $temp)."\n"; //十进制
“>>” 右移运算   右移运算符“>>”是双目运算符。其功能是把“>> ”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。
例如:

设  a=48,

a>>4

表示把00110000右移为00000011(十进制3)。

应该说明的是,对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补0,而为负数时,符号位为1,最高位是补0或是补1 取决于编译系统的规定

<?php
$a = 48;
$temp = $a>>4;
echo sprintf("%d", $temp)."\n"; //十进制
				
时间: 2024-10-13 02:36:08

PHP中为位运算符(几乎很少用)的相关文章

C中按位运算符简介

六种常见按位运算符:按位与(&).按位或(|).按位异或(^).按位非(~).按位左移(<<).按位右移(>>). 这些运算符都只能用于整数类型,~是一元运算符,其他都是二元运算符. 1.按位与(&):合并操作数的对应位,如果两个位都是1,结果为1:否则,结果为0.如: x      00001101 y      00000110 x&y  00000100 2.按位或(|):对应位中的两位都是0,则结果为0:否则为1. x      00001101 y

[Java 泥水匠] Java Components 之二:算法篇之项目实践中的位运算符(有你不懂的

作者:泥沙砖瓦浆木匠 网站:http://blog.csdn.net/jeffli1993 个人签名:打算起手不凡写出鸿篇巨作的人,往往坚持不了完成第一章节. 交流QQ群:[编程之美 365234583]http://qm.qq.com/cgi-bin/qm/qr?k=FhFAoaWwjP29_AonqzL0rpdQAjjqlHQQ 如果我的帮到了你,是否乐意捐助一下或请一杯啤酒也好呢?有你支持,干的更好~ 点这参与众筹 我的支付宝:13958686678 2.1 前言 自从上篇[Java 泥水

关于C语言中的位运算符的学习即应用

一.运算符的种类和运算规则: &      与:全1则1,有0则0   |       或:有1则1,全0则0   ^   异或:相同为0,不同为1   ~   取反:~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1变0   << 左移:用来将一个数的各二进制位全部左移N位,右补0   >> 右移:将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数,高位补0 二.各种位运算符的应用: 1.  & 运算 a.清零运算 若想对一个存储单元清零,

PHP中关于位运算符 与 或 异或 取反

<?php /** * author:LMS * createTime:2015/07/22 * desctiption:位运算[ & | ^ ~ ] * 与&:如果a.b两个值不相同,则与结果为0.如果a.b两个值相同,与结果为1 * 或|:与逻辑中的或一致[只有两个值都为假时才为假,其余都为真] * 异或[xor]如果a.b两个值不相同,则异或结果为1.如果a.b两个值相同,异或结果为0 * 取反[~]:对每一位取反 * [注意!非 ==>是逻辑运算符,返回是个布尔值 */

C/C++中的位运算符

--------开始-------- 我自己都记不住这是第几次把这几个位运算符搞混了,刚好在刚用过来把这几个位运算符记下来,俗话说的好好记性不如个烂笔头. 运算符: 与           或           非          异或 and , &      or , |       not , ~        ^ 单目运算符:~(按位取反) 双目运算符:<<   >>   &   |   ^(左移,右移,按位与,按位或,按位异或) 1)~     按位取

java中的位运算符

运算符 结果 - 按位非(NOT)(一元运算) & 按位与(AND) | 按位或(OR) ^ 按位异或(XOR) >>     "有符号"右移运算 符,将运算符左边的对象向右移动运算符右边指定的位数.使用符号扩展机制,也就是说,如果值为正,则在高位补0,如果值为负,则在高位补1 << 左移运算符,将运算符左边的对象向左移动运算符右边指定的位数(在低位补0 >>>   "无符号"右移运算 符,将运算符左边的对象向右移动

【转】C语言位运算符:与、或、异或、取反、左移与右移详细介绍

转载自:http://www.jb51.net/article/40559.htm,感谢原作者. 以下是对C语言中的位运算符:与.或.异或.取反.左移与右移进行了详细的分析介绍,需要的朋友可以过来参考下 位运算是指按二进制进行的运算.在系统软件中,常常需要处理二进制位的问题.C语言提供了6个位操作运算符.这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型. C语言提供的位运算符列表:运算符 含义 描述& 按位与 如果两个相应的二进制位都为1,则该位

Java位运算符详解

# 前言 之前了解过位运算符,左移`>`等于除以2.但是我在看jdk源码的时候发现了一个`>>>`三个符号的,不明白这是什么意思,就去搜了一下,发现还挺多的知识点的,就整理了一下. 首先我们知道,我们编写的程序最终都是在计算机底层进行的,计算机底层也仅支持0.1两种符号.所以当时网上有个键盘只有0.1两个键,那才是大佬用的键盘.扯远了... 先来复习一下java的基本类型都占多少字节,占多少位(1字节等于8位): | 类型 | 字节数 | 位数 | 大小范围 | | -------

VB.NET中的除法运算符 与 C#中的除法运算符

VB.NET中的除法运算符有两个:/(浮点除法).\(整数除法) C#中的除法运算符只有一个:/(除法) VB.NET中的除法运算符与C#中的除法运算符存在很大的差异,使用时注意区分. 关于VB.NET中的除法运算符的介绍(摘自MSDN): /(浮点除法):将两个数相除并返回以浮点数表示的结果. 所得结果的数据类型取决于操作数的类型. 下表显示如何确定结果的数据类型. 操作数数据类型 结果数据类型 两个表达式都是整数数据类型(SByte.Byte.Short.UShort.Integer.UIn