位运算符——管理事务的开关状态
2018-06-22 05:36:31来源:未知 阅读 ()
1,什么是开关状态
现实中,有很多数据都是只有两种结果(值)的,对应的其实就是我们的布尔类型的值。
这里,所谓的管理一组事务的开关状态,应该理解为其实就是管理若干个只有2个状态的“数据符号”。
比如:有5个灯泡,对应5个状态数据。这5个灯泡,就有25 种状态呢
这里的管理目标是:使用一个变量,就可以表达若干个数据的“当前状态”。具体有3个任务:
1、通过该变量,可以获知任何一个数据(灯泡)的当前状态。
2、通过该变量,可以将一个一个数据的状态“关闭”;
3、通过该变量,可以将一个一个数据的状态“开启”;
<?php //假设,有5个灯泡需要管理,需要实现以下的功能目标 //1,可以指定任意一个灯泡的“当前状态” //2,可以打开指定的任意一个灯泡 //首先,需要设定对应的5个常量,代表对应的5个灯泡 define("D1" ,1); //对应的二进制值为:00000001 define("D2" ,2); //对应的二进制值为:00000010 define("D3" ,4); //对应的二进制值为:00000100 define("D4" ,8); //对应的二进制值为:00001000 define("D5" ,16); //对应的二进制值为:00010000 //更多的灯,也按此规律定义常量值!!! //然后,定义一个变量,该变量就代表这5个灯泡的“任意组合状态”值; $state = 10; //其对应的为二进制值为:00001010 //此时,它其实也表示第2个和第4个灯凉 //$state =7; //其对应的为二进制值为:00000111 //$state =71; //其对应的为二进制值为:00010001 //注意:以上3个赋值,只是表示$state的值可以是“任意的” //任务1,可以指定任意一个灯泡的“当前状态” //需求1a:请输入灯泡1的状态 //按此算法逻辑就可以判断灯1 //分析: //$state的值为:00001010 //D1的值为 :00000001 // & //------------------------ // 00000000 if(($state & D1) >0){ echo "<br />灯1是亮的"; }else { echo "<br />灯1是灭的"; } //需求1b:请输入灯泡2的状态; if(($state & D2) >0){ echo "<br />灯2是亮的"; }else { echo "<br />灯2是灭的"; } //写出方法,展示所有灯的整体显示 function ShowAll() { echo "<p>"; for($i=1;$i<=5;++$i) { $s = "D".$i; if(($GLOBALS['state'] & constant($s)) > 0) { echo "灯{$i}是亮的<br />"; }else { echo "灯{$i}是灭的<br />"; } } echo "</p>"; } echo "<br />初始多有灯的状态:"; ShowAll(); //需求2,可以打开指定的任意一个灯泡 //也只要按照如下算法就可以打开: //$state = $state |对应灯的常量值: //需求2a:请打开灯3 $state = $state | D3; echo "<br />灯3打开后:"; ShowAll(); //需求2b:请打开灯5: $state = $state | D5; echo "<br />灯5打开后:"; ShowAll(); //需求3,可以关闭指定的任意一个灯泡 //也只要按照如下算法就可以打开: //$state = $state & (~对应灯的常量值): //需求3a:请关闭灯2 $state = $state & (~D3); echo "<br />灯3关闭后:"; ShowAll(); //需求3b:请关闭灯5 $state = $state & (~D5); echo "<br />灯5关闭后:"; ShowAll(); //需求3c:请关闭灯1(其实该登本来就是关闭的) $state = $state & (~D1); echo "<br />灯1关闭后:"; ShowAll();
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:网页跳转的多种方式
下一篇:[日常] DNS的迭代查询过程
- PHP三元运算符的结合性介绍 2020-03-28
- PHP文件管理之实现网盘及压缩包的功能操作 2020-02-20
- Laravel如何使用数据库事务及捕获事务失败后的异常详解 2020-02-08
- PHP运算符的详细介绍 2019-12-15
- PHP之访问控制的和运算符优先级的实际操作 2019-10-08
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash