位运算符与管理一组事物的状态问题

位运算符

位运算符的基本规则

位运算符指向整数的二进制数字形式

  1. 按位与运算基本规则:1&1=>0    1&0=>0    0&1=>0    0&0=>0
  2. 按位或运算基本规则:1 | 1=>1    1 | 0=>1    0 | 1=>1    0 | 0=>0
  3. 按位非运算:~1=>0    ~0=>1
  4. 异或运算:1^1=0    0^0=0    1^0=1    0^1=1

按位与运算:

形式:A & B    //A和B常规为十进制数字,不管是哪种形式都会转为2进制进行按位与运算得到结果然后转换为原来的形式

举例:$r1 = 9 $ 13    //$r1结果为:1001 & 1101=>1001=>9

按位或运算:

形式:A | B    //A和B常规为十进制数字,不管是哪种形式都会转为2进制进行按位或运算得到结果然后转换为原来的形式

举例:$r1 = 15 | 13    //$r1结果为:10010 & 01101=>11111=>31

按位左移运算:

形式:A << n    //将A转为2进制进行左移n位,最左边n位移出去,最右边n位添0

举例:$r = 9 <<2,解释如下:

数字900001001
左移2位00100100
$r100100100

结果为36.

按位右移运算:

形式:A >> n    //将A转为2进制进行右移n位,最右边n位移出去,最左边n位添0

举例:$r1 = 9 >> 2,解释如下:

数字900001001
右移2位00000010
$r100000010

结果为2

按位非

将一个数字的二进制形式的每一个数字取反的到结果

按位异或

将两个数字的二进制形式进行异或得到的结果

 

管理一组事物的开关状态

开关状态:某类数据只有两个值:true、false、1、0

一组事物:多个数据的任意可能出现的状态

假设有五个灯泡,每个灯泡都用一位2进制来表示,于是可以得到每个灯泡单独亮时的所表示的数字

  1. 第一个灯泡:const d1=1;    //二进制表示:00000001
  2. 第二个灯泡:const d2=2;    //二进制表示:00000010
  3. 第三个灯泡:const d3=4;    //二进制表示:00000100
  4. 第四个灯泡:const d4=8;    //二进制表示:00001000
  5. 第五个灯泡:const d5=16;  //二进制表示:00010000

 需解决的问题如下:

确定一个灯泡的开关状态:

语法:$s1 = $state & dn    //n表示1-5之间的任意一个,当$s1>0时,表示第n个灯泡亮;否则暗

打开指定的灯泡:

语法:$s1 = $state | dn    //n表示1-5之间的任意一个

关闭指定的灯泡

语法:$s1 = $state & ~dn    //n表示1-5之间的任意一个

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值