NOT في صفحة ويب والبوابات الثلاث جنبًا إلى جنب
لصفحة NOT قائمة منسدلة واحدة للمفتاح وزر Apply وسطر مصباح يعرض عكس الاختيار. وفي الدالة أدناه يكون المفتاح on فقط إذا أرسلت القائمة on بالضبط؛ فيكون المصباح مطفأ، وإلا فمضاء. ولا يطبع الكتاب كودًا لهذه الصفحة، فالدالة من تأليفنا. والآن المزالق. في PHP تعكس العلامة ! الشرط، لكن echo يطبع القيمة false نصًا فارغًا، فلا يطبع echo !1 شيئًا. ولترى 0 اكتب (int)!1. وفي VB.NET تعكس الكلمة Not القيمتين True وFalse وتُطبعان True وFalse. لكنها على عدد صحيح تعمل على البتات: Not 1 يساوي -2 لا 0. فلا تكتب Not 1 وأنت تقصد «NOT للبت 1». استعمل قيمة Boolean، أو اكتب 1 - a. وأخيرًا يمكن جمع NOT مع بوابة أخرى. فالعمود A AND NOT B يساوي 1 فقط حين يكون A يساوي 1 وB يساوي 0. ويضع الجدول الملخص البوابات الأساسية الثلاث جنبًا إلى جنب.
| البوابة | المداخل | الصفوف | المخرج 1 حين | الصيغة |
|---|---|---|---|---|
| AND | اثنان أو أكثر | 2ⁿ | كل المداخل 1 | Y = A·B |
| OR | اثنان أو أكثر | 2ⁿ | مدخل واحد على الأقل 1 | Y = A + B |
| NOT | واحد | 2 | المدخل 0 | Y = ¬A |
1function notPage(array $post): string { 2 $switch = "off"; 3 if (isset($post['apply'])) { 4 $switch = (($post['list1'] ?? "") === "on") ? "on" : "off"; 5 } 6 $lamp = ($switch === "on") ? "unlit" : "lit"; 7 return "$switch $lamp"; 8} 9 10echo notPage([]), "\n"; 11echo notPage(['apply' => 'Apply', 'list1' => 'on']), "\n"; 12echo notPage(['apply' => 'Apply', 'list1' => 'off']), "\n"; 13echo notPage(['apply' => 'Apply', 'list1' => 'maybe']);
off lit on unlit off lit off lit
1echo "[", !1, "]\n"; 2echo "[", (int)!1, "]\n"; 3var_dump(!1);
[] [0] bool(false)
1Dim t As Boolean = True 2Dim n As Integer = 1 3Console.WriteLine(Not t) 4Console.WriteLine(Not n) 5Console.WriteLine(1 - n)
False -2 0
| A | B | A∧¬B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
تنبّأ أولًا ثم تحقق بالقلم: ماذا يطبع echo (int)!0; وecho (int)!!1; في PHP، وماذا يطبع Console.WriteLine(Not False) في VB.NET؟ ثم اكتب جدول الحقيقة لـ (NOT A) AND B.