日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > php開(kāi)源 > php教程 > php位運(yùn)算用法詳細(xì)介紹

php位運(yùn)算用法詳細(xì)介紹

來(lái)源:程序員人生   發(fā)布時(shí)間:2014-06-19 15:26:12 閱讀次數(shù):4024次

php位運(yùn)算在php中不常用到,但作用是相當(dāng)大的,下面我們來(lái)介紹一下php位運(yùn)算用法.

$a & $b and(按位與)

$a | $b or(按位或)

$a ^ $b Xor(按位異或)

~$a Not(按位非)

$a << $b Shift left(左移)

$a >> $b Shift right(右移)

詳解

$a & $b 按位與 把$a和$b中都為1的位設(shè)為1;

例:10 & 12 = 8

10 1010

12 1100

1000 8

$a | $b 按位或 把$a或$b中有一個(gè)為1的為設(shè)為1;

例:10 | 12 = 14

10 1010

12 1100

1110 14

$a ^ $b 按位異或

例:10 ^ 12

10 1010

12 1100

0110 6

~a 按位非 把$a中的為0的為設(shè)為1,1的為設(shè)為0

例:~10 =

10 1010 1111111111111111111111111111111111111111111111111111111111110101 -11

$a << $b 左移 把$a中的為向左移動(dòng)$b次(每一次移動(dòng)都表示乘以2);

例:1 << 10 = 1024

1(1) 左移10位 10000000000(1024)

相當(dāng)于1*2的10次方,php中沒(méi)有冪運(yùn)算真是郁悶.

$a >> $b 右移 把$a中的為向右移動(dòng)$b次(每一次移動(dòng)都表示除以2);

例:1024 << 2 = 1256

10000000000(1024) 右移2位就是 100000000(256)

php為運(yùn)算$a & $b and(按位與)$a | $b or(按位或)$a ^ $b Xor(按位異或)~$a Not(按位非)$a << $b Shift left(左移)$a >> $b Shift right(右移)

詳解$a & $b 按位與 把$a和$b中都為1的位設(shè)為1;例:10 & 12 = 810 101012 1100 1000 8

$a | $b 按位或 把$a或$b中有一個(gè)為1的為設(shè)為1;例:10 | 12 = 1410 101012 1100 1110 14

$a ^ $b 按位異或例:10 ^ 1210 101012 1100 0110 6

~a 按位非 把$a中的為0的為設(shè)為1,1的為設(shè)為0例:~10 = 10 1010 1111111111111111111111111111111111111111111111111111111111110101 -11

$a << $b 左移 把$a中的為向左移動(dòng)$b次(每一次移動(dòng)都表示乘以2);例:1 << 10 = 10241(1) 左移10位 10000000000(1024)相當(dāng)于1*2的10次方,php中沒(méi)有冪運(yùn)算真是郁悶.

$a >> $b 右移 把$a中的為向右移動(dòng)$b次(每一次移動(dòng)都表示除以2);例:1024 << 2 = 125610000000000(1024) 右移2位就是 100000000(256)

標(biāo)志位字段與位運(yùn)算符的結(jié)合

PHP里的error_reporting的參數(shù)值列表

value constant

1 E_ERROR

2 E_WARNING

4 E_PARSE

8 E_NOTICE

16 E_CORE_ERROR

32 E_CORE_WARNING

64 E_COMPILE_ERROR

128 E_COMPILE_WARNING

256 E_USER_ERROR

512 E_USER_WARNING

1024 E_USER_NOTICE

2047 E_ALL

2048 E_STRICT

4096 E_RECOVERABLE_ERROR

發(fā)現(xiàn)value的值都是跳躍式的吧,而且全是2的n+1次方.

再看下面這個(gè).把value的值轉(zhuǎn)成二進(jìn)制了.

value constant

0000 0001 E_ERROR

0000 0010 E_WARNING

0000 0100 E_PARSE

0000 1000 E_NOTICE

0001 0000 E_CORE_ERROR

0010 0000 E_CORE_WARNING.

… …一次為每加一次方就是二進(jìn)制加了一位(學(xué)過(guò)計(jì)算機(jī)的差不多都知道:)…)

注意:每個(gè)選項(xiàng)對(duì)應(yīng)了一位(1為開(kāi)啟 0為關(guān)閉)

好了,下面我們看看這么設(shè)置參數(shù)的好處.

舉三個(gè)參數(shù)為例來(lái)看是什么效果吧

error_reporting(3);//decbin(3) == 0000 0011; (相當(dāng)于設(shè)置 E_WARNING 和 E_ERROR )

error_reporting(4);//decbin(4) == 0000 0100;(相當(dāng)于設(shè)置 E_PARSE )

error_reporting(5);//decbin(5) == 0000 0101;(相當(dāng)于設(shè)置 E_PARSE 和 E_ERROR)

獲取設(shè)置:

要看某項(xiàng)是否開(kāi)啟的判斷可以用位運(yùn)算來(lái)獲得(& — “與”規(guī)則 全1為1,否則為0)

//E_PARSE

if($n & 4){

//E_PARSE開(kāi)啟

//4的二進(jìn)制是 0100,因?yàn)橹挥械?位是1,所以進(jìn)行”&”操作時(shí)其它何位置全被置0了

//因此只有$n的第三位也是1時(shí)結(jié)果才會(huì)大于0.

//如4(0100),5(0101),6(0110),7(0111)

}else{

//E_PARSE關(guān)閉

//第三位為0了就代表此選項(xiàng)是關(guān)閉狀態(tài)

}

改變?cè)O(shè)置:($n代表當(dāng)前的十進(jìn)制值)

在應(yīng)用時(shí)我們可能跟據(jù)需要針對(duì)某位進(jìn)行開(kāi)關(guān)設(shè)置.

看下面的用法.

//關(guān)閉E_PARSE項(xiàng) 用 ‘&’“與”規(guī)則

$n = $n&(8192-4-1);

//為什么用8191呢?

//這和你的選項(xiàng)數(shù)有關(guān)系,這個(gè)錯(cuò)誤顯示標(biāo)記一共用了13位(4096的二進(jìn)制是13位),而8192是(14位).

//為什么減4減1呢?

//8192-4-1=8187.(1111111111011)二進(jìn)制是13位了,與我們用到的最大位數(shù)一樣了.而且對(duì)應(yīng)的第三位上的值是0了.

//用這個(gè)數(shù)去和1到4096之間任何一個(gè)數(shù)按位“與”運(yùn)算,是不是除了第三位會(huì)置0,其它位上的值不會(huì)變化呢? ”與”規(guī)則 :)

//同理,想關(guān)掉 E_WARNING

//$n = $n&(8192-2-1);

//開(kāi)啟E_PARSE項(xiàng)用到‘|’“或”規(guī)則

//$n = $n|4;

//看了上面的關(guān)閉,對(duì)于開(kāi)啟有點(diǎn)想法兒了吧:)

// ‘|’ — “或”規(guī)則 有1為1 否則為0

//上面是所有位為1的情況下不影響其它位,現(xiàn)在則變成所有位為0的情況下不會(huì)影響其它位了:)

//所以我們只要把后面的操作數(shù)的二進(jìn)制位相應(yīng)的值置1,其它所有位置0就OK了.

//發(fā)現(xiàn)了嗎?正好是我們每個(gè)設(shè)置項(xiàng)對(duì)應(yīng)的十進(jìn)制數(shù)值:)

思路就是這樣了,如果想同時(shí)操作多個(gè)位上的設(shè)置值也可以,就看你的操作數(shù)怎么設(shè)置了.

以后開(kāi)發(fā)中遇到需要一個(gè)參數(shù)同時(shí)設(shè)置多個(gè)選項(xiàng)的情況時(shí)我們就可以考慮一下這個(gè)方法了:)

生活不易,碼農(nóng)辛苦
如果您覺(jué)得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 国产专区一区二区 | 日韩一级片网站 | jizz18欧美| 国产成人在线观看免费网站 | 欧美在线不卡视频 | 日韩av影院在线 | 亚洲一区二区三区在线视频 | 一区二区三区日韩 | 国产欧美综合一区二区三区 | 91精品国产综合久久久久蜜臀 | 国产一区二区日韩 | 美女黄18 | 欧美精品久久久久久久免费软件 | 日韩电影在线免费观看 | 欧美一区二区三区在线 | 久久久精品久久久久 | 欧美一区二区在线视频 | 精品无码久久久久久国产 | 国产精品国产亚洲精品看不卡15 | 男女在线免费视频 | 亚洲天堂2017 | 国产欧美日韩综合 | 国产三级三级三级精品8ⅰ区 | 成年人小视频 | 日本在线一区二区三区 | 久久久久久久久网站 | 亚洲综合在线一区 | 欧美视频自拍偷拍 | 毛片免费播放 | 亚洲免费激情 | 精品不卡 | 精品久久久久久久久久久久久久 | 激情婷婷丁香 | 五月激情丁香 | 99久久99久久精品国产片果冻 | 狠久久| 俺去俺来也www色老板 | 亚洲综合一区在线 | 91精品网站 | 中文字幕亚洲视频 | 日韩精品一区在线观看 |