導航:首頁 > 編程語言 > php位運算實際應用

php位運算實際應用

發布時間:2022-10-30 05:42:24

『壹』 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"; //十進制

『貳』 PHP中位運算符的作用

位運算符平常較少用到.
但運算符不能以作用大小來衡量.
當你要用到的時候,你發現沒有,你就會發現作用真的很大.
=========
你要是暫時不理解,可以先跳過.

『叄』 PHP里的位運算

總之先化為二進制,然後各位逐個計算,然後轉換為十進制。
16|4=
10000B|
00100B=
10100B=20

20|4=
10100B|
00100B=
10100B=20

『肆』 php 里的位運算符怎麼算的

位運算,顧名思義就是按二進制位進行運算。首先應該熟悉基本的位預演算法則:0&1=0,1&1=1,0|1=1,0^1=1,1^1=0,~0=1等等。如果$m = 3(011) ; $n = 5(101) ;則m與n之間的位預算都是先將十進制數轉換為二進制數後,按對應為上的0或1進行相應的運算,比如$mn = $n & $m = 011 & 101 = 001即十進制的1,其它的以此類推。這下你應該明白了

『伍』 PHP位運算符理解

左移1位=>*2
右移1位=>/2

『陸』 關於php 位運算符的問題

這個涉及到系統底層,WEB開發中幾乎沒用到,知道下有這個東西就好了。底層的東西解釋總是簡單不了的。
變數在內存中的存放都是二進制數字。整數在32位系統上是佔用4位元組,一個位元組是8位,也就是32位,位運算就是位級的運算操作了。

$a << $b Shift left(左移) 將 $a 中的位向左移動 $b 次(每一次移動都表示「乘以 2」)。
假定變數 $a 的值是 3,$b 的值是 2。
那麼 $a 在內存中的存放的格式是:
00000000 00000000 00000000 00000011
每執行一次左移,都將所有的位向左移動,右邊補零,左邊超過的舍棄。
所以 $a 左移 2 得到的是:
00000000 00000000 00000000 00011000
也就是 12。相當於 3 × 2 × 2 = 12。

$a >> $b Shift right(右移) 將 $a 中的位向右移動 $b 次(每一次移動都表示「除以 2」)。
假定變數 $a 的值是 24,$b 的值是 2。
那麼 $a 在內存中的存放的格式是:
00000000 00000000 00000000 00011000
每執行一次右移,都將所有的位向由移動,右邊超過的舍棄,左邊空出的位補零。
所以 $a 右移 2 得到的是:
00000000 00000000 00000000 00000110
也就是 6。相當於 24 ÷ 2 ÷ 2 = 6。

位移運算是系統底層運算,運算的速度比乘除還要快很多,優化代碼優化到極致的時候,可以將數換算成二的公倍數,然後進行位移計算。但在WEB開發中幾乎沒有任何必要,而且超過系統底層了,程序在的可移植性就會降低。

其他的位運算符也是差不多的。比如:
$a & $b And(按位與) 將把 $a 和 $b 中都為 1 的位設為 1。
假定變數 $a 的值是 5,$b 的值是 6。
$a:
00000000 00000000 00000000 00000101
$b:
00000000 00000000 00000000 00000110
$a & $b :
00000000 00000000 00000000 00000101
00000000 00000000 00000000 00000110
───────────────────────────
00000000 00000000 00000000 00000100
豎的看,上下都是 1 的得到 1 ,否則就是 0。
所以 $a & $b = 4。

~ $a Not(按位非) 將 $a 中為 0 的位設為 1,反之亦然。
~ $a:
00000000 00000000 00000000 00000101
───────────────────────────
11111111 11111111 11111111 11111010
如果 $a 是有符號整數,第一位是符號位,1表示負數,那麼 ~ $a = -2147483642。
如果 $a 是無符號整數,第一位還是數據位,那麼 ~ $a = 4294967290。

以下的就不詳細介紹了:
$a | $b Or(按位或) 將把 $a 或者 $b 中為 1 的位設為 1。
$a ^ $b Xor(按位異或) 將把 $a 和 $b 中不同的位設為 1。

平常說的幾位的系統,就是系統處理整數的時候,是多少個位同時計算的,上面的例子都是基於32位系統。因為移動時超過的位將被舍棄,如果是64位或12位的,位移的結果就可能不一樣了,要將計算時位的數量調整下。

『柒』 php中兩個整型數組能不能進行按位或運算(就像c語言和matlab的&運算符一樣)舉個例子吧,這

php的底層是用C開發的 |和&位運算符在PHP里也能使用
數組的結構跟C的不一樣 所以不能像C這樣直接進行數組位運算

但是你完全可以用PHP寫一個類似的運算函數

『捌』 php 位運算能做什麼

乘以2可以用左移
除以2可以用右移
還有可以用異或交換2個變數:a^=b; b^=a; a^=b;
還有用做mask,屏蔽某位
學了組成原理就應該知道的

『玖』 PHP 位運算符

$h=16,$c=4,表達式16<<4的值為256,因為16(即二進制的00010000)向左移四位等於256(即二進制的100000000)

『拾』 位運算符的php 位運算符

位運算符允許對整型數中指定的位進行置位。如果左右參數都是字元串,則位運算符將操作字元的 ASCII 值。 <?phpecho12^9;//輸出為Ƌ'echo"12"^"9";//輸出退格字元(ascii8)//(Ƈ'(ascii49))^(Ə'(ascii57))=#8echo"hallo"^"hello";//輸出ascii值#0#4#0#0#0//'a'^'e'=#4?>

閱讀全文

與php位運算實際應用相關的資料

熱點內容
國二考試調用編譯器運算選擇題 瀏覽:748
同濟大學高等數學pdf 瀏覽:232
延時的宏命令怎麼設置 瀏覽:594
資料庫有哪些加密 瀏覽:207
改之理反編譯注冊教程 瀏覽:389
什麼是編譯程序和翻譯程序 瀏覽:205
python課程心得總結 瀏覽:17
派派中怎麼看對方在哪個伺服器 瀏覽:794
xp配置java環境變數配置 瀏覽:7
python中1到100怎麼算 瀏覽:765
小度我想看程序員 瀏覽:505
bs刷裝備建立後文件夾沒有 瀏覽:79
找漫畫看應該下載什麼app 瀏覽:182
如何在vps上搭建自己的代理伺服器 瀏覽:744
nginxphp埠 瀏覽:403
內臟pdf 瀏覽:152
怎麼看雲伺服器架構 瀏覽:85
我的世界國際服為什麼登不進伺服器 瀏覽:998
微盟程序員老婆 瀏覽:932
intellij創建java 瀏覽:113