當前位置:首頁 » 編程語言 » 位運算符php

位運算符php

發布時間: 2023-08-14 22:03:12

php中&&與&有什麼區別

PHP中&&與&的區別:

1、運算符性質的區別

&&在PHP中是一個邏輯操作符,也叫條件操作符。

&是邏輯語言,邏輯上表示兩者屬於缺一不可的關系,還可以表示一個人和另外一個人之意,與and同義。如A&B,表示A與B,A和B,A×B。

2、作用上的區別

&&就是判斷兩個表達式的真假性,只有兩個表達式同時為真才為真,有一個為假則為假,具有短路性質。

&是將兩個二進制的數逐位相與,結果是相與之後的結果。

3、用途上的區別

&&:x&&y——功能描述: 「條件與」:x和y均為true,取值是true,否則取值是false。&&需要兩個操作數的值都是true時,才取值true,但是兩個操作符還是有區別的:使用方法是int&& rx=x。

&:是一個位運算符。參加運算的兩個數的二進制形式,每一個二進制位進行」與「運算,最後的結果二進製作為結果,例如:3 & 5=1,因為3和5的二進制分別是0011、0101,兩個進行與運算的結果是0001。

Ⅱ 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中兩個小於號「<<」表示的php中的位運算符,<<表示的是向左移動,>>表示的是向右移動,這個我們可以通過一個例子更加容易的來理解位運算:

<?php
//定義許可權
define('READ',1<<0);//把可讀許可權放在最右邊
define('WRITE',1<<1);//可讀許可權向左移一位
define('EXCUTE',1<<2);//可執行許可權向左移兩位

//賦予許可權
$user_permission=READ|WRITE;

//驗證許可權
echo'可讀:',($user_permission&READ)?'Yes':'No'," ";
echo'可寫:',($user_permission&WRITE)?'Yes':'No'," ";
echo'可執行:',($user_permission&EXCUTE)?'Yes':'No'," ";
?>

通過位運算,我們能更加方便的控制許可權。

Ⅳ php中的運算符有哪些

A選項,看下圖:

不用全部記住,記住平時比較常用的就行了,還有記住:算術運算符>關系運算符>邏輯運算符>賦值運算符。

(4)位運算符php擴展閱讀:

PHP 中的運算符分為:四則運算符、邏輯運算符、三目運算符和位運算符。

運算符優先順序指定了兩個表達式綁定得有多「緊密」。例如,表達式 1 + 5 * 3 的結果是 16 而不是 18 是因為乘號(「*」)的優先順序比加號(「+」)高。

必要時可握棗以用括弧來強制改變優先順序。例如:(1 + 5) * 3 的值為 18。如果運算符優先順序相同,則使用從左到右的左聯順序。

對字元串和數字進褲皮慎行加胡敬法運算。

請看這些例子:

x = 5 + 5; document.write(x); x = "5" + "5"; document.write(x); x = 5 + "5"; document.write(x); x = "5" + 5; document.write(x)。

x = 5 + 5; document.write(x); x = "5" + "5"; document.write(x); x = 5 + "5"; document.write(x); x = "5" + 5; document.write(x)。

Ⅳ 關於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 按位取反 運算符(~) 到底怎麼算出來的 $a = 8 $b = ~$a echo $b 結果是 - 9

在數值范圍內,~a = -(a+1)

8的二進制是1000,補滿32位,也就是前面28個0 1000
取反後 28個1 0111
第一位是符號位 1代表負數,剩下的27個1 0111
負數是用補碼表示的,補碼是原碼取反+1,也就是說 27個1 0111 是某個數的補碼,那倒推回去,這個數就是補碼-1後取反,也就是 27個1 0110取反,得到27個0 1001,也就是9,再加上前面的符號位,得到-9

Ⅶ php中 & || ^ 的符號意思。

&:這個符號叫「與」,表示左右兩邊的操作數都為「真」時才為「真」,口訣是真真為真,真假為假,假真為假,假假為假;

||:這個符號叫「或」,表示左右兩邊的操作數只要有一個為「真」時就為「真」,口訣是真真為真,真假為真,假真為真,假假為假;

^:這個符號叫「非」,表示將右邊的操作數從「真」變成「假(非真)」的結果,從「假」變成「真(非假)」的結果。

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

給你一個與運算的,或運算的直接改一下&=>||

functiona($ar,$br){

foreach($aras$key=>$value){

$cr[]=$value&$br[$key];

}

return$cr;

}

$ar=array(0,0,1,1);

$br=array(1,0,1,0);

print_r(a($ar,$br));
熱點內容
暢玩守望先鋒最少要什麼配置 發布:2025-02-05 23:37:52 瀏覽:452
雲桌面伺服器啟動不了 發布:2025-02-05 23:29:09 瀏覽:25
uc緩存視頻怎麼徹底清理 發布:2025-02-05 23:24:16 瀏覽:632
家用電腦該怎麼樣配置 發布:2025-02-05 23:24:13 瀏覽:337
唐門按鍵精靈腳本 發布:2025-02-05 23:24:02 瀏覽:5
博圖加密演算法 發布:2025-02-05 23:07:48 瀏覽:548
幀數腳本 發布:2025-02-05 23:06:26 瀏覽:854
android菜單效果 發布:2025-02-05 23:00:54 瀏覽:673
怎樣把獨立存儲器放入此電腦 發布:2025-02-05 23:00:21 瀏覽:89
取消微信設置密碼在哪裡設置 發布:2025-02-05 22:48:49 瀏覽:667