Hướng dẫn dùng bitwise operations trong PHP

Hai phép toán cơ bản đối với hệ nhị phân là OR và AND.

Nội dung chính

  • 2. Toán tử gán
  • 3. Toán tử Bitwise
  • 4. Toán tử so sánh
  • 5. Các toán tử tăng / giảm
  • 6. Toán tử logic
  • 7. Toán tử chuỗi
  • 8. Toán tử mảng
  • 9. Kiểu của toán tử
  • 10. Toán tử thực thi
  • 11. Toán tử kiểm soát lỗi
  • 12. Độ Ưu tiên của các toán tử PHP

HOẶC có nghĩa là 'nếu A bật hoặc B bật'. Một ví dụ trong thế giới thực sẽ là hai thiết bị chuyển mạch song song. Nếu một trong hai cho phép dòng điện chạy qua, thì dòng điện đi qua.

AND có nghĩa là 'nếu cả A và B đều bật'. Ví dụ trong thế giới thực là hai công tắc mắc nối tiếp. Dòng điện sẽ chỉ đi qua nếu cả hai đều cho phép dòng điện chạy qua.

Trong máy tính, đây không phải là công tắc vật lý mà là chất bán dẫn và chức năng của chúng được gọi là cổng logic . Chúng làm những việc tương tự như công tắc - phản ứng với dòng điện hoặc không có dòng điện.

Khi áp dụng cho số nguyên, mọi bit trong một số được kết hợp với mọi bit trong số kia. Vì vậy, để hiểu các toán tử theo chiều bit OR và AND, bạn cần chuyển các số thành nhị phân, sau đó thực hiện phép toán OR hoặc AND trên mọi cặp bit phù hợp.

Đó là lý do tại sao:

00011011 (odd number)
AND
00000001 (& 1)
== 
00000001 (results in 1)

Trong khi

00011010 (even number)
AND
00000001 (& 1)
==
00000000 (results in 0)

Do đó, phép toán (& 1) so sánh bit ngoài cùng bên phải với 1 bằng cách sử dụng logic AND. Tất cả các bit khác được bỏ qua một cách hiệu quả bởi vì bất cứ điều gì VÀ không có gì là không có gì. Một số chẵn trong hệ nhị phân cũng là một số chẵn trong ký hiệu thập phân (10 là bội số của 2).

Các hoạt động cơ bản khác đối với hệ thống nhị phân bao gồm NOT và XOR. NOT có nghĩa là 'nếu A tắt' và là dạng cổng logic duy nhất chỉ nhận một tín hiệu hoặc 'tham số' thay vì hai. XOR có nghĩa là 'nếu A hoặc B được bật, nhưng không phải cả hai'. Và sau đó là NAND, NOR và NXOR, về cơ bản KHÔNG được kết hợp với AND, OR và XOR, tức là NAND có nghĩa là 'nếu cả A và B đều không nằm trên'.

Trong lập trình, toán tử

& means AND,
| means OR, 
~ means NOT, and
^ means XOR.

Những cái khác có thể được tạo thành bằng cách kết hợp chúng, ví dụ:

~ (a & b) is equivalent to a NAND operation

Ghi chú cụ thể về PHP

Toán tử bitwise không hoạt động trên các giá trị dấu phẩy động và trong PHP, các giá trị float sẽ được chuyển đổi ngầm thành số nguyên trước tiên. Các số bên ngoài phạm vi có thể được biểu thị dưới dạng số nguyên sẽ bị cắt ngắn thành 0 - nghĩa là tất cả các số trên PHP_INT_MAX sẽ trông "chẵn" trong biểu thức ($num & 1)). Nếu bạn muốn hỗ trợ các số bên ngoài PHP_INT_MIN / PHP_INT_MAX, bạn sẽ cần fmod($num, 2). Tuy nhiên, nếu bạn đang sử dụng PHP 64-bit, các số nguyên của bạn sẽ có độ chính xác cao hơn float.

27 hữu ích 1 bình luận chia sẻ

Toán tử trong PHP là một ký hiệu, tức là được sử dụng để thực hiện các hoạt động trên các toán hạng. Nói cách đơn giản, toán tử được sử dụng để thực hiện các hoạt động trên các biến hoặc giá trị. Ví dụ:

$num = 10 + 20; // + là toán tử và 10,20 là toán hạng

Trong ví dụ trên, + là toán tử cộng nhị phân, 10 và 20 là toán hạng và $num là biến.

Các toán tử PHP có thể được phân loại theo các dạng sau:

  • Toán tử số học
  • Toán tử gán
  • Toán tử Bitwise
  • Toán tử so sánh
  • Các toán tử tăng / giảm
  • Toán tử logic
  • Toán tử chuỗi
  • Toán tử mảng
  • Loại toán tử
  • Toán tử thực thi
  • Toán tử kiểm soát lỗi

Chúng ta cũng có thể phân loại các toán tử bằng các toán hạng. Chúng có thể được phân loại theo 3 dạng:

  • Toán tử đơn nguyên: hoạt động trên các toán hạng đơn như ++, – v.v.
  • Toán tử nhị phân: hoạt động trên hai toán hạng như nhị phân +, -, *, / v.v.
  • Toán tử bậc ba : hoạt động trên ba toán hạng như “?:”.
  • 1. Toán tử số học
  • 2. Toán tử gán
  • 3. Toán tử Bitwise
  • 4. Toán tử so sánh
  • 5. Các toán tử tăng / giảm
  • 6. Toán tử logic
  • 7. Toán tử chuỗi
  • 8. Toán tử mảng
  • 9. Kiểu của toán tử
  • 10. Toán tử thực thi
  • 11. Toán tử kiểm soát lỗi
  • 12. Độ Ưu tiên của các toán tử PHP

Các toán tử số học PHP được sử dụng để thực hiện các phép tính số học thông thường như cộng, trừ, v.v. với các giá trị số.

Toán tử Tên Thí dụ Giải thích
+ Thêm vào $a + $b Tổng các toán hạng
Phép trừ $a – $b Trừ của các toán hạng
* Phép nhân $a * $b Nhân của các toán hạng
/ chia $a / $b Thương số của toán hạng
% Mô đun $a % $b Chia lấy phần còn lại của toán hạng
** Luỹ thừa $a ** $b $a với thành lũy thừa $b

Toán tử lũy thừa (**) đã được giới thiệu trong PHP 5.6.

2. Toán tử gán

Các toán tử gán được sử dụng để gán giá trị cho các biến khác nhau. Toán tử gán cơ bản là “=”.

Toán tử Tên Thí dụ Giải thích
= Gán $a = $b Giá trị của toán hạng bên phải được gán cho toán hạng bên trái.
+ = Thêm rồi Gán $a + = $b Phép cộng giống như $a = $a + $b
– = Trừ rồi gán $a – = $b Phép trừ giống như $a = $a – $b
* = Nhân rồi Gán $a * = $b Phép nhân giống như $a = $a * $b
/ = Chia rồi Gán(thương số) $a / = $b Tìm thương giống với $a = $a / $b
% = Chia rồi gán(phần còn lại) $a% = $b Tìm phần còn lại giống như $a = $a% $b

3. Toán tử Bitwise

Các toán tử bitwise được sử dụng để thực hiện các phép toán bit trên các toán hạng. Các toán tử này cho phép đánh giá và thao tác các bit cụ thể trong số nguyên.

Toán tử Tên Thí dụ Giải thích
& $a & $b Bit bằng 1 khi cả 2 $a và $b được đặt thành 1, nếu không thì là 0.
| Hoặc  $a | $b Bit bằng 1 khi $a hoặc $b được đặt thành 1
^ Xor  $a ^ $b Bit bằng 1 khi $a hoặc $b được đặt thành 0.
~ không phải ~ $a Bit 1 được đặt thành 0 và bit 0 được đặt thành 1
<< Sang trái $a << $b Dịch trái các bit của toán hạng $a bằng $b
>> Chuyển sang phải $a >> $b Dịch phải các bit của toán hạng $a bằng $b

4. Toán tử so sánh

Toán tử so sánh cho phép so sánh hai giá trị, chẳng hạn như số hoặc chuỗi. Dưới đây là danh sách các toán tử so sánh:

Toán tử Tên Thí dụ Giải thích
== bằng $a == $b Trả về TRUE nếu $a bằng $b
=== Giống hệt nhau $a === $b Trả về TRUE nếu $a bằng $b và chúng có cùng kiểu dữ liệu
! == Không định nghĩa $a! == $b Trả về TRUE nếu $a không bằng $b và chúng không cùng kiểu dữ liệu
! = Không bằng $a! = $b Trả về TRUE nếu $a không bằng $b
<> Không công bằng $a <> $b Trả về TRUE nếu $a không bằng $b
< Ít hơn $a <$b Trả về TRUE nếu $a nhỏ hơn $b
> Lớn hơn $a> $b Trả về TRUE nếu $a lớn hơn $b
<= Ít hơn hoặc bằng $a <= $b Trả về TRUE nếu $a nhỏ hơn hoặc bằng $b
> = Lớn hơn hoặc bằng $a> = $b Trả về TRUE nếu $a lớn hơn hoặc bằng $b
<=> không gian $a <=> $b Trả về -1 nếu $a nhỏ hơn $b. Trả về 0 nếu $a bằng $b. Trả về 1 nếu $a lớn hơn $b

5. Các toán tử tăng / giảm

Các toán tử tăng và giảm được sử dụng để tăng và giảm giá trị của một biến.

Toán tử Tên Thí dụ Giải thích
++ Tăng ++ $a Tăng giá trị của $a lên một, sau đó trả về $a
$a ++ Trả về $a, sau đó tăng giá trị của $a từng cái một
giảm dần – $a Giảm giá trị của $a từng cái một, sau đó trả về $a
$a– Trả lại $a, sau đó giảm giá trị của $a từng cái một

6. Toán tử logic

Các toán tử logic được sử dụng để thực hiện các phép toán mức bit trên các toán hạng. Các toán tử này cho phép đánh giá và thao tác các bit cụ thể trong số nguyên.

Toán tử Tên Thí dụ Giải thích
$a và $b Trả về TRUE nếu cả $a và $b đều đúng
Hoặc là Hoặc là $a hoặc $b Trả về TRUE nếu $a hoặc $b là true
xor Xor $a xor $b Trả về TRUE nếu $ hoặc $b là true nhưng không phải cả hai
! không phải ! $a Trả về TRUE nếu $a không đúng
&& $a && $b Trả về TRUE nếu $a và $b là true
|| Hoặc là $a || $b Trả về TRUE nếu $a hoặc $b là true

7. Toán tử chuỗi

Các toán tử chuỗi được sử dụng để thực hiện thao tác trên chuỗi. Có hai toán tử chuỗi trong PHP, được đưa ra dưới đây:

Toán tử Tên Thí dụ Giải thích
. Kết nối $a. $b Ghép cả $a và $b
. = Kết hợp và gán $a. = $b Đầu tiên nối $a và $b, sau đó gán chuỗi đã nối thành $a, ví dụ $a = $a. $b

8. Toán tử mảng

Các toán tử mảng được sử dụng trong trường hợp mảng. Về cơ bản, các toán tử này được sử dụng để so sánh các giá trị của mảng.

Toán tử Tên Thí dụ Giải thích
+ kết hợp $a + $ y Kết hợp $a và $b
== Bình đẳng $a == $b Trả về TRUE nếu $a và $b có cùng một cặp khóa / giá trị
! = Bất bình đẳng $a! = $b Trả về TRUE nếu $a không bằng $b
=== Danh tính $a === $b Trả về TRUE nếu $a và $b có cùng một cặp khóa / giá trị cùng loại theo cùng một thứ tự
! == Không nhận dạng $a! == $b Trả về TRUE nếu $a không giống với $b
<> Bất bình đẳng $a <> $b Trả về TRUE nếu $a không bằng $b

9. Kiểu của toán tử

Toán tử kiểu instanceof được sử dụng để xác định xem một đối tượng, lớp cha và lớp dẫn xuất của nó có phải là cùng một kiểu hay không. Về cơ bản, toán tử này xác định đối tượng thuộc về lớp nào. Nó được sử dụng trong lập trình hướng đối tượng.

";  
    var_dump($charu instanceof Developer);           //It will return true.  
    var_dump($charu instanceof Programmer);       //It will return false.  
?>  

Đầu ra:

Cafedev is a developer.
bool(true) bool(false)

10. Toán tử thực thi

PHP có toán tử thực thi (“) . PHP thực thi nội dung của backticks dưới dạng lệnh shell. Toán tử thực thi và shell_exec () cho cùng một kết quả.

Toán tử Tên Thí dụ Giải thích
backticks echo `dir`; Thực hiện lệnh shell và trả về kết quả.Tại đây, nó sẽ hiển thị các thư mục có sẵn trong thư mục hiện tại.

Lưu ý: Lưu ý rằng dấu ngoặc kiểu này (“) không phải là dấu ngoặc kép.

11. Toán tử kiểm soát lỗi

PHP có một toán tử kiểm soát lỗi, tức là ký hiệu (@) . Bất cứ khi nào nó được sử dụng với một biểu thức, bất kỳ thông báo lỗi nào có thể được tạo ra bởi biểu thức đó sẽ bị bỏ qua.

Toán tử Tên Thí dụ Giải thích
@ tại @file (‘non_existing_file’) Lỗi tập tin

12. Độ Ưu tiên của các toán tử PHP

Hãy xem mức độ ưu tiên của các toán tử trong PHP với tính kết hợp với thứ tự đầu tiên trong bảng sẽ có độ ưu tiên cao nhất.

Toán tử thông tin thêm Sự liên kết
clone new nhân bản và tạo mới không liên kết
[ mảng() trái
** số học phải
++ – ~ (int) (float) (string) (array) (object) (bool) @ tăng / giảm và các loại phải
instanceof Xem kiểu không liên kết
! lôgic (phủ định) phải
* / % số học trái
+ – . số học và nối chuỗi trái
<< >> bitwise (dịch chuyển) trái
<<=>> = sự so sánh không liên kết
==! = ===! == <> sự so sánh không liên kết
& bitwise AND trái
^ bitwise XOR trái
| bitwise HOẶC trái
&& logic AND trái
|| logic HOẶC trái
?: ba ngôi trái
= + = – = * = ** = / =. =% = & = | = ^ = << = >> = => sự phân công/ gán phải
and logic trái
xor logic trái
or logic trái
, nhiều cách sử dụng (dấu phẩy) trái

Cài ứng dụng cafedev để dễ dàng cập nhật tin và học lập trình mọi lúc mọi nơi tại đây.

Tài liệu từ cafedev:

  • Full series tự học PHP từ cơ bản tới nâng cao tại đây nha.
  • Ebook về PHP tại đây.
  • Các nguồn kiến thức MIỄN PHÍ VÔ GIÁ từ cafedev tại đây

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

  • Group Facebook
  • Fanpage
  • Youtube
  • Instagram
  • Twitter
  • Linkedin
  • Pinterest
  • Trang chủ

Chào thân ái và quyết thắng!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!