Toán tử luận lý và thao tác bit trong Javascript

Toán tử luận lý

Toán tử luận lý được sử dụng để trả về giá trị luận lý (Boolean). Riêng với toán tử && và || sẽ trả về giá trị của một trong hai toán hạng nếu chúng không phải là giá trị luận lý (Quá trình tính toán luận lý được hiểu ngầm). Các toán tử luận lý mà Javascript hỗ trợ bao gồm:

Giả sử biến A = 10 và biến B = 20, ta sẽ có

Toán tử và mô tả
&&
Phép AND luận lý
Ép kiểu 2 toán hạng về boolean rồi thực hiện AND.
A && B
⇔ 10 AND 20
⇔ true AND true
Có kết quả là 20 (true)
||
Phép OR luận lý
Ép kiểu 2 toán hạng về boolean rồi thực hiện OR.
A || B
⇔ 10 OR 20
⇔ true OR true
Có kết quả là 10 (true)
|
Phép NOT luận lý
Ép kiểu toán hạng về boolean rồi thực hiện NOT.
!A
⇔ NOT 10
⇔ NOT true
Có kết quả là false

Ví dụ

Bên dưới là ví dụ về cách dùng các toán tử luận lý trong Javascript.

<html>
  <body>
    <script type="text/javascript">
      var a = true;
      var b = false;
      var linebreak = "<br />";

      document.write("(a && b) => ");
      result = (a && b);
      document.write(result);
      document.write(linebreak);

      document.write("(a || b) => ");
      result = (a || b);
      document.write(result);
      document.write(linebreak);

      document.write("!(a && b) => ");
      result = (!(a && b));
      document.write(result);
      document.write(linebreak);
    </script>
  </body>
</html>

Kết quả

(a && b) => false
(a || b) => true
!(a && b) => true

Toán tử thao tác bit (bitwise)

Các toán tử trên bit sẽ xem các toán hạng là một chuỗi bit (32-bit) để tính toán. Ví dụ, 9 sẽ tương đương với chuỗi bit 1001. Các toán tử thao tác bit mà Javascript hỗ trợ bao gồm:

Giả sử biến A = 10 và biến B = 20, ta sẽ có

Toán tử và mô tả
&
Phép AND bit
Ép kiểu 2 toán hạng về 32-bit integer. Sau đó thực hiện phép AND trên bit.
A & B
⇔ 10 AND-BIT 20
⇔ 0000000A AND-BIT 00000014
⇔ 00000000
Có kết quả là 0
|
Phép OR bit
Ép kiểu 2 toán hạng về 32-bit integer. Sau đó thực hiện phép OR trên bit.
A | B
⇔ 10 OR-BIT 20
⇔ 0000000A AND-BIT 00000014
⇔ 0000001E
Có kết quả là 30
^
Phép XOR bit
Ép kiểu 2 toán hạng về 32-bit integer. Sau đó thực hiện phép XOR trên bit.
A ^ B
⇔ 10 XOR-BIT 20
⇔ 0000000A XOR-BIT 00000014
⇔ 0000001E
Có kết quả là 30
~
Phép NOT bit
Ép kiểu toán hạng về 32-bit integer. Sau đó thực hiện phép NOT trên bit.
~A
⇔ NOT-BIT 10
⇔ NOT-BIT 0000000A
⇔ FFFFFFF5
Có kết quả là 4294967285
<<
Phép dịch trái bit
Ép kiểu toán hạng về 32-bit integer. Sau đó thực hiện dịch bit trái. Thêm n bit 0 vào cuối chuỗi bit. Điều này đồng nghĩa nhân toán hạng với 2n.
A << 2
⇔ 0000000A << 2
⇔ 00000028
Có kết quả là 40
>>
Phép dịch phải bit giữ dấu
Ép kiểu toán hạng về 32-bit integer. Sau đó thực hiện dịch phải bit. Thêm n bit (giống MSB) vào đầu chuỗi bit.
-10 >> 2
⇔ FFFFFFF6 >> 2
⇔ FFFFFFFD
Có kết quả là -3
>>>
Phép dịch phải bit với 0
Ép kiểu toán hạng về 32-bit integer. Sau đó thực hiện dịch phải bit. Thêm n bit 0 vào đầu chuỗi bit. Điều này đồng nghĩa với chia toán hạng lấy nguyên cho 2n.
-10 >>> 2
⇔ FFFFFFF6 >>> 2
⇔ 3FFFFFFD
Có kết quả là 1073741821

Ví dụ

Bên dưới là ví dụ về cách dùng các toán tử thao tác bit trong Javascript.

&lt;html&gt;
  &lt;body&gt;
    &lt;script type=&quot;text/javascript&quot;&gt;
      var a = 2; // Bit presentation 10
      var b = 3; // Bit presentation 11
      var linebreak = &quot;&lt;br /&gt;&quot;;
    
      document.write(&quot;(a &amp;amp;amp; b) =&gt; &quot;);
      result = (a &amp;amp;amp; b);
      document.write(result);
      document.write(linebreak);
    
      document.write(&quot;(a | b) =&gt; &quot;);
      result = (a | b);
      document.write(result);
      document.write(linebreak);
    
      document.write(&quot;(a ^ b) =&gt; &quot;);
      result = (a ^ b);
      document.write(result);
      document.write(linebreak);
    
      document.write(&quot;(~b) =&gt; &quot;);
      result = (~b);
      document.write(result);
      document.write(linebreak);
    
      document.write(&quot;(a &lt;&lt; b) =&gt; &quot;);
      result = (a &lt;&lt; b);
      document.write(result);
      document.write(linebreak);
    
      document.write(&quot;(a &gt;&gt; b) =&gt; &quot;);
      result = (a &gt;&gt; b);
      document.write(result);
      document.write(linebreak);
    &lt;/script&gt;
  &lt;/body&gt;
&lt;/html&gt;

Kết quả

(a & b) => 2
(a | b) => 3
(a ^ b) => 1
(~b) => -4
(a << b) => 16
(a >> b) => 0

>> Xem thêm: Toán tử so sánh trong Javascript

>> Xem thêm: Toán tử số học trong Javascript

No Responses

Bình luận