ตัวดำเนินการทางตรรกะ
|
Relational Operator |
ตัวอย่าง |
|
|
< |
Op1<Op2 : คืนค่าความเป็นจริงถ้า Op1 น้อยกว่า Op2 | a=(1<3); //aจะมีค่าเป็นจริง |
|
<= |
Op1<=Op2 : คืนค่าความเป็นจริงถ้า Op1 น้อยกว่า Op2 หรือเท่ากับ Op2 | a=(5<=7); //a จะมีค่าเป็นจริง |
|
> |
Op1>Op2 :คืนค่าความเป็นจริงถ้า Op1 มากกว่า Op2 | a=(5>7); //a จะมีค่าเป็นจริง |
|
>= |
Op1>=Op2 : คืนค่าความเป็นจริงถ้า Op1 มากกว่า หรือเท่ากับ Op2 | a=(5>=7); //a จะมีค่าเป็นจริง |
|
== |
Op1==Op2 : คืนค่าความเป็นจริงถ้า Op1 เท่ากับ Op2 | a=(5==7); // a จะมีค่าเป็นเท็จเพราะ 5 ไม่เท่ากับ 7 |
|
!= |
Op1!=Op2 : คืนค่าความเป็นจริงถ้า Op1 ไม่เท่ากับ Op2 | a=(5!=7); // a จะมีค่าเป็นจริง เพราะ 5 ไม่เท่ากับ 7 |
|
“: |
(expression)”a:b :คือค่าตัว operand a ถ้า expression เป็นจริง | a=(3>5)”false:true; //a จะมีค่าเป็นจริง เพราะผลการเปรียเทียบ 3 มากกว่า 5 เป็นเท็จ เมื่อค่าที่ได้เป็นเท็จจะเลือกค่า true |
| เครื่องหมายดำเนินการ | ความหมาย | ตัวอย่าง | ผลลัพธ์ |
| ! | NOT (นิเสธ) | !(5 > 3) | false |
|
&& หรือ & |
AND (และ) |
(x >= 10)&&(x <= 100) |
มีค่าเป็น true เมื่อ
(x >= 10) มีค่าเป็น true และ (x <= 100) มีค่าเป็น true |
|
|| หรือ | |
OR (หรือ) |
(x < 10) || (x > 100) |
มีค่าเป็น true เมื่อ
(x < 10) มีค่าเป็น true หรือ (x > 100) มีค่าเป็น true |
|
^ |
Exclusive OR |
(x > 20) ^ (y > 20) |
มีค่าเป็น false ได้ 2 กรณี คือ
กรณีที่1 เมื่อ (x >= 10) มีค่าเป็น true และ (x <= 100) มีค่าเป็น true กรณีที่2 เมื่อ (x >= 10) มีค่าเป็น false และ (x <= 100) มีค่าเป็น false |
ตัวดำเนินการทางตรรกะแบบต่างๆ สามารถแสดงผลลัพธ์ของนิพจน์ตรรกะตามค่าความจริงของการดำเนินการได้ดังตารางค่าความจริง (Truth Table) ดังนี้
ตารางค่าความจริงของตัวดำเนินการ ! หรือ NOT
|
ค่าความจริงนิพจน์ |
ตัวอย่าง |
ผลลัพธ์ |
|
false |
!(false) |
False |
|
true |
!(true) |
True |
ตารางค่าความจริงของตัวดำเนินการ && หรือ AND
|
ค่าความจริงนิพจน์ที่1 |
ค่าความจริงนิพจน์ที่2 |
ตัวอย่าง |
ผลลัพธ์ |
|
false |
false |
false && false |
False |
|
false |
true |
false && true |
False |
|
true |
false |
true && false |
False |
|
True |
true |
true && true |
True |
ตารางค่าความจริงของตัวดำเนินการ || หรือ OR
|
ค่าความจริงนิพจน์ที่1 |
ค่าความจริงนิพจน์ที่2 |
ผลลัพธ์ |
ผลลัพธ์ |
|
False |
false |
false || false |
False |
|
False |
true |
false || true |
True |
|
True |
false |
true || false |
True |
|
True |
true |
true || true |
True |
ตารางค่าความจริงของตัวดำเนินการ ^ หรือ XOR
|
ค่าความจริงนิพจน์ที่1 |
ค่าความจริงนิพจน์ที่2 |
ผลลัพธ์ |
ผลลัพธ์ |
|
False |
false |
false ^ false |
False |
|
False |
true |
false ^ true |
True |
|
True |
false |
true ^ false |
True |
|
True |
true |
true ^ true |
false |
ตัวอย่าง การใช้ Operator แบบ boolean
| class BoolLogic{
public static void main(String args[]){ boolean a = true; boolean b = false; boolean c = a | b; boolean d = a & b; boolean e = a ^ b; boolean f = (!a & b) | (a & !b); boolean g = !a; System.out.println(“a = ” + a); System.out.println(“b = ” + b); System.out.println(“a | b = ” + c); System.out.println(“a & b = ” + d); System.out.println(“a ^ b = ” + e); System.out.println(“!a = ” + g); System.out.println(“!a & b | a & !b = ” + f); } } |
3.1.3 ตัวดำเนินการระดับ (Bitwise Operator) ในการจัดเก็บข้อมูลประเภท Interger, short, int และ long จะเก็บในรูปแบบบิต และการเก็บข้อมูลจะเป็นแบบเครื่องหมาย
|
Operator |
รูปแบบ และการทำงาน |
ตัวอย่าง |
ผลลัพธ์ที่ได้ |
| ~ | ~ Op : ทำ complement คือ ทำการเปลี่ยนค่าของบิต 1 เป็น 0 และเปลี่ยนบิตที่มีค่า 0 เป็น 1 | a= 0x0005 |
-6 |
| <<, >> | การย้ายบิตไปทางซ้าย และทางขวา | a= 0x0005 << 2 a= 0x0005 >> 2 |
20 |
| >>> | การย้ายบิตไปทางขวาเสมือนไม่มีเครื่องหมาย | a= 0x0005 >>> 2 a= 0xFFF5 >>> 2 |
1 |
| & | ประมวลผลแบบ Bitwise AND | a= 0x0005 & a = 0x0007; |
5 |
| ^ | ประมวลผลแบบ Bitwise XOR | a= 0x0005 ^ a= 0x0007; |
2 |
| | | ประมวลผลแบบ Bitwise OR | a= 0x0005 | a= 0x0007; |
7 |
3.1.4 ลำดับการทำงานของตัวดำเนินการ (precedence and associativity of operators)
แสดงลำดับการทำงานของตัวดำเนินการในภาษา C มีดังนี้
|
ลำดับที่ |
ตัวดำเนินการ |
ลักษณะการทำงาน (Associativity) |
|
1 |
( ) [ ] . -> |
Left to right |
|
2 |
– ~ ! * & |
Light to left |
|
3 |
++ – – |
Right to left |
|
4 |
* / % |
Left to right |
|
5 |
+ – |
Left to right |
|
6 |
<< >> |
Left to right |
|
7 |
< > < = >= |
Left to right |
|
8 |
= = != |
Left to right |
|
9 |
& (bitwise AND) |
Left to right |
|
10 |
^ (bitwise exclu OR) |
Left to right |
|
11 |
| (bitwise inclu OR) |
Left to right |
|
12 |
&& |
Left to right |
|
13 |
|| |
Left to right |
|
14 |
?: |
Left to right |
|
15 |
= += -= /= %= |
Right to left |
|
16 |
<<= >>= |
Right to left |
ตัวดำเนินการที่มีลำดับการทำงานอันดับที่ 1 จะทำงานก่อนอันดับที่ 2 โดยทำงานไปเรื่อย ๆ จนกระทั่งหมดตัวดำเนินการ ส่วนลักษณะการทำงานของตัวดำเนินการแต่ละอันดับนั้นแตกต่างกันไป ซึ่งจะเป็นการทำงานจากซ้ายไปขวา (left to rigth) หรือขวาไปซ้าย (rigth to left) ก็ได้






