លំហសិក្សាធិការកម្ពុជា
V1.0
ប្រតិបត្តិករ Bitwise ក្នុង Python ប្រើសម្រាប់ធ្វើប្រតិបត្តិការលើប៊ីត 0 និង 1 នៃចំនួនគត់ ដោយរួមមាន & សម្រាប់ AND, | សម្រាប់ OR, ^ សម្រាប់ XOR, ~ សម្រាប់បញ្ច្រាសប៊ីត, << សម្រាប់រំកិលប៊ីតទៅឆ្វេង និង >> សម្រាប់រំកិលប៊ីតទៅស្ដាំ។ ប្រតិបត្តិករទាំងនេះផ្ដល់លទ្ធផលជាចំនួនគត់ថ្មី និងត្រូវបានប្រើក្នុងការគ្រប់គ្រងសិទ្ធិ Flags, Hardware, IoT, Network និងកម្មវិធីកម្រិតទាប។ វាខុសពីប្រតិបត្តិករតក្កវិទ្យា and, or និង not ដែលប្រើសម្រាប់ភ្ជាប់លក្ខខណ្ឌ និងជាទូទៅផ្ដល់លទ្ធផលជា True ឬ False។
កុំព្យូទ័ររក្សាទុក និងដំណើរការទិន្នន័យជាទម្រង់គោលពីរ ដែលមានតែប៊ីត 0 និង 1។ ទោះបីយើងសរសេរចំនួនដូចជា 5, 10 ឬ 20 ក៏ដោយ កុំព្យូទ័របម្លែងចំនួនទាំងនេះទៅជាទម្រង់គោលពីរ មុនពេលធ្វើប្រតិបត្តិការ។
Python ផ្ដល់ ប្រតិបត្តិករ Bitwise សម្រាប់ធ្វើការដោយផ្ទាល់លើប៊ីតនីមួយៗនៃចំនួនគត់។ ប្រតិបត្តិករទាំងនេះមានប្រយោជន៍ក្នុងការគ្រប់គ្រង Hardware, IoT, Network, Permissions, Flags, Encryption និងប្រព័ន្ធដែលត្រូវការគ្រប់គ្រងទិន្នន័យកម្រិតប៊ីត។
ប្រតិបត្តិករ Bitwise ក្នុង Python រួមមាន៖
& — Bitwise AND| — Bitwise OR^ — Bitwise XOR~ — Bitwise NOT<< — Left Shift>> — Right ShiftBit គឺជាឯកតាតូចបំផុតនៃទិន្នន័យក្នុងកុំព្យូទ័រ ហើយមានតម្លៃតែពីរគឺ៖
0
1ឧទាហរណ៍ ចំនួនគត់ 5 ក្នុងគោលដប់ អាចសរសេរជាគោលពីរថា៖
5 = 0101ចំនួន 3 ក្នុងគោលពីរគឺ៖
3 = 0011ប្រតិបត្តិករ Bitwise នឹងប្រៀបធៀប ឬកែប្រែប៊ីតនីមួយៗនៅទីតាំងដូចគ្នា។

Python មានមុខងារ bin() សម្រាប់បម្លែងចំនួនគត់ទៅជាទម្រង់គោលពីរ។
number = 10
print(bin(number))លទ្ធផល៖
0b1010អក្សរ 0b បញ្ជាក់ថា តម្លៃខាងក្រោយជាចំនួនគោលពីរ។
ឧទាហរណ៍៖
print(bin(5))
print(bin(8))
print(bin(15))លទ្ធផល៖
0b101
0b1000
0b1111| ប្រតិបត្តិករ | ឈ្មោះ | ឧទាហរណ៍ | អត្ថន័យ | ||
|---|---|---|---|---|---|
& | Bitwise AND | a & b | ផ្ដល់ 1 បើប៊ីតទាំងពីរជា 1 | ||
| ` | ` | Bitwise OR | `a | b` | ផ្ដល់ 1 បើមានប៊ីតមួយជាយ៉ាងហោចណាស់ជា 1 |
^ | Bitwise XOR | a ^ b | ផ្ដល់ 1 បើប៊ីតទាំងពីរខុសគ្នា | ||
~ | Bitwise NOT | ~a | បញ្ច្រាសប៊ីត | ||
<< | Left Shift | a << 1 | រំកិលប៊ីតទៅឆ្វេង | ||
>> | Right Shift | a >> 1 | រំកិលប៊ីតទៅស្ដាំ |
&ប្រតិបត្តិករ & ប្រៀបធៀបប៊ីតពីរនៅទីតាំងដូចគ្នា។ លទ្ធផលជាប៊ីត 1 លុះត្រាតែប៊ីតទាំងពីរជា 1។
តារាងតម្លៃពិត៖
| A | B | A & B |
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
ឧទាហរណ៍៖
a = 6
b = 3
result = a & b
print(result)ទម្រង់គោលពីរ៖
6 = 0110
3 = 0011
---------
00100010 ស្មើនឹង 2។
លទ្ធផល៖
2a = 6
b = 3
print("a =", a, "Binary:", bin(a))
print("b =", b, "Binary:", bin(b))
print("a & b =", a & b, "Binary:", bin(a & b))លទ្ធផល៖
a = 6 Binary: 0b110
b = 3 Binary: 0b11
a & b = 2 Binary: 0b10|ប្រតិបត្តិករ | ផ្ដល់ប៊ីត 1 ប្រសិនបើប៊ីតណាមួយក្នុងចំណោមប៊ីតទាំងពីរជា 1។
តារាងតម្លៃពិត៖
| A | B | A | B |
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
ឧទាហរណ៍៖
a = 6
b = 3
result = a | b
print(result)ទម្រង់គោលពីរ៖
6 = 0110
3 = 0011
---------
01110111 ស្មើនឹង 7។
លទ្ធផល៖
7^ប្រតិបត្តិករ ^ ផ្ដល់ប៊ីត 1 នៅពេលប៊ីតទាំងពីរខុសគ្នា។ ប្រសិនបើប៊ីតទាំងពីរដូចគ្នា លទ្ធផលគឺ 0។
តារាងតម្លៃពិត៖
| A | B | A ^ B |
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
ឧទាហរណ៍៖
a = 6
b = 3
result = a ^ b
print(result)ទម្រង់គោលពីរ៖
6 = 0110
3 = 0011
---------
01010101 ស្មើនឹង 5។
លទ្ធផល៖
5ចំនួនណាមួយធ្វើ XOR ជាមួយខ្លួនឯង ផ្ដល់លទ្ធផល 0៖
x = 10
print(x ^ x)លទ្ធផល៖
0ចំនួនណាមួយធ្វើ XOR ជាមួយ 0 ផ្ដល់តម្លៃដើម៖
x = 10
print(x ^ 0)លទ្ធផល៖
10~ប្រតិបត្តិករ ~ ប្រើសម្រាប់បញ្ច្រាសប៊ីត៖
0 ប្រែទៅជា 11 ប្រែទៅជា 0ឧទាហរណ៍៖
a = 5
result = ~a
print(result)លទ្ធផល៖
-6ក្នុង Python លទ្ធផលរបស់ ~x អាចគណនាតាមរូបមន្ត៖
~x = -(x + 1)ដូច្នេះ៖
~5 = -(5 + 1)
= -6ឧទាហរណ៍បន្ថែម៖
print(~0)
print(~1)
print(~10)លទ្ធផល៖
-1
-2
-11លទ្ធផលអវិជ្ជមានកើតឡើងដោយសារកុំព្យូទ័រប្រើទម្រង់ Two’s Complement សម្រាប់តំណាងចំនួនអវិជ្ជមាន។
<<ប្រតិបត្តិករ << រំកិលប៊ីតទៅខាងឆ្វេងតាមចំនួនទីតាំងដែលបានកំណត់។ រាល់ការរំកិលទៅឆ្វេងមួយទីតាំង ជាទូទៅស្មើនឹងការគុណនឹង 2។
ឧទាហរណ៍៖
a = 5
result = a << 1
print(result)ទម្រង់គោលពីរ៖
5 = 0101រំកិលទៅឆ្វេងមួយទីតាំង៖
10101010 ស្មើនឹង 10។
លទ្ធផល៖
10a = 5
print(a << 1)
print(a << 2)
print(a << 3)លទ្ធផល៖
10
20
40អាចយល់តាមរូបមន្ត៖
a << n = a × 2ⁿឧទាហរណ៍៖
5 << 2 = 5 × 2²
= 5 × 4
= 20>>ប្រតិបត្តិករ >> រំកិលប៊ីតទៅខាងស្ដាំ។ សម្រាប់ចំនួនវិជ្ជមាន ការរំកិលទៅស្ដាំមួយទីតាំងជាទូទៅស្មើនឹងការចែកយកផលចែកគត់នឹង 2។
ឧទាហរណ៍៖
a = 20
result = a >> 1
print(result)ទម្រង់គោលពីរ៖
20 = 10100រំកិលទៅស្ដាំមួយទីតាំង៖
0101001010 ស្មើនឹង 10។
លទ្ធផល៖
10a = 20
print(a >> 1)
print(a >> 2)
print(a >> 3)លទ្ធផល៖
10
5
2អាចយល់តាមរូបមន្តសម្រាប់ចំនួនវិជ្ជមាន៖
a >> n = a // 2ⁿឧទាហរណ៍៖
20 >> 2 = 20 // 4
= 5កំណត់៖
a = 6
b = 3ទម្រង់គោលពីរ៖
a = 0110
b = 0011លទ្ធផល៖
| កន្សោម | គោលពីរ | គោលដប់ |
a & b | 0010 | 2 |
a | b | 0111 | 7 |
a ^ b | 0101 | 5 |
~a | បញ្ច្រាសប៊ីត | -7 |
a << 1 | 1100 | 12 |
a >> 1 | 0011 | 3 |
# Python Bitwise Operators Exercise a = int(input("Enter the first integer: ")) b = int(input("Enter the second integer: ")) print("\n=== Original Values ===") print("a =", a, "Binary:", bin(a)) print("b =", b, "Binary:", bin(b)) and_result = a & b or_result = a | b xor_result = a ^ b not_a_result = ~a not_b_result = ~b left_shift_a = a << 1 right_shift_a = a >> 1 print("\n=== Bitwise Results ===") print("a & b =", and_result) print("Binary:", bin(and_result)) print("\na | b =", or_result) print("Binary:", bin(or_result)) print("\na ^ b =", xor_result) print("Binary:", bin(xor_result)) print("\n~a =", not_a_result) print("~b =", not_b_result) print("\na << 1 =", left_shift_a) print("Binary:", bin(left_shift_a)) print("\na >> 1 =", right_shift_a) print("Binary:", bin(right_shift_a)) print("\n=== Simple Explanations ===") print("AND keeps bits that are 1 in both numbers.") print("OR keeps bits that are 1 in either number.") print("XOR keeps bits that are different.") print("NOT reverses the bits.") print("Left shift moves bits to the left.") print("Right shift moves bits to the right.")
# Python Bitwise Operators Exerciseបន្ទាត់នេះជាមតិយោបល់ ដែលប្រាប់ថា កម្មវិធីនេះជាលំហាត់អំពីប្រតិបត្តិករ Bitwise។
a = int(input("Enter the first integer: "))បន្ទាត់នេះ៖
input() ដើម្បីទទួលទិន្នន័យពីអ្នកប្រើ។int() ដើម្បីបម្លែងទិន្នន័យទៅជាចំនួនគត់។a។b = int(input("Enter the second integer: "))បន្ទាត់នេះទទួលចំនួនគត់ទីពីរ ហើយរក្សាទុកក្នុងអញ្ញតិ b។
print("a =", a, "Binary:", bin(a))
print("b =", b, "Binary:", bin(b))មុខងារ bin() បម្លែងចំនួនគត់ទៅជាទម្រង់គោលពីរ។
and_result = a & bបន្ទាត់នេះអនុវត្ត AND លើប៊ីតនីមួយៗរបស់ a និង b ហើយរក្សាទុកលទ្ធផលក្នុង and_result។
or_result = a | bបន្ទាត់នេះអនុវត្ត OR លើប៊ីតរបស់ចំនួនទាំងពីរ។
xor_result = a ^ bបន្ទាត់នេះអនុវត្ត XOR ហើយផ្ដល់ប៊ីត 1 នៅទីតាំងដែលប៊ីតទាំងពីរខុសគ្នា។
not_a_result = ~a
not_b_result = ~bបន្ទាត់ទាំងនេះបញ្ច្រាសប៊ីតរបស់ a និង b។
left_shift_a = a << 1បន្ទាត់នេះរំកិលប៊ីតរបស់ a ទៅឆ្វេងមួយទីតាំង។ សម្រាប់ចំនួនវិជ្ជមាន វាស្មើនឹងការគុណនឹង 2។
right_shift_a = a >> 1បន្ទាត់នេះរំកិលប៊ីតរបស់ a ទៅស្ដាំមួយទីតាំង។ សម្រាប់ចំនួនវិជ្ជមាន វាស្រដៀងនឹងការចែកយកផលចែកគត់នឹង 2។
អ្នកប្រើបញ្ចូល៖
Enter the first integer: 6
Enter the second integer: 3លទ្ធផល៖
=== Original Values ===
a = 6 Binary: 0b110
b = 3 Binary: 0b11
=== Bitwise Results ===
a & b = 2
Binary: 0b10
a | b = 7
Binary: 0b111
a ^ b = 5
Binary: 0b101
~a = -7
~b = -4
a << 1 = 12
Binary: 0b1100
a >> 1 = 3
Binary: 0b11ប្រតិបត្តិករ Bitwise អាចប្រើសម្រាប់រក្សាទុកសិទ្ធិច្រើនក្នុងចំនួនតែមួយ។
ឧទាហរណ៍៖
READ = 1 # 001
WRITE = 2 # 010
DELETE = 4 # 100ផ្ដល់សិទ្ធិអាន និងសរសេរ៖
permission = READ | WRITE
print(permission)ការគណនា៖
001
010
---
011លទ្ធផលគឺ 3។
ពិនិត្យសិទ្ធិអាន៖
if permission & READ:
print("Read permission is allowed.")ពិនិត្យសិទ្ធិលុប៖
if permission & DELETE:
print("Delete permission is allowed.")
else:
print("Delete permission is not allowed.")# Permission Flags Example
READ = 1
WRITE = 2
DELETE = 4
user_permission = READ | WRITE
print("User permission value:", user_permission)
if user_permission & READ:
print("Read: Allowed")
else:
print("Read: Denied")
if user_permission & WRITE:
print("Write: Allowed")
else:
print("Write: Denied")
if user_permission & DELETE:
print("Delete: Allowed")
else:
print("Delete: Denied")លទ្ធផល៖
User permission value: 3
Read: Allowed
Write: Allowed
Delete: Deniedប្រតិបត្តិករ Bitwise អាចប្រើជាមួយ Assignment Operators បានផងដែរ។
| ប្រតិបត្តិករ | សមមូលនឹង | ||
&= | x = x & value | ||
| ` | =` | `x = x | value` |
^= | x = x ^ value | ||
<<= | x = x << value | ||
>>= | x = x >> value |
ឧទាហរណ៍៖
x = 6
x &= 3
print(x)លទ្ធផល៖
2ឧទាហរណ៍ Left Shift Assignment៖
x = 5
x <<= 2
print(x)លទ្ធផល៖
20| Logical Operator | Bitwise Operator | |
and | & | |
or | ` | ` |
not | ~ | |
| ប្រើជាមួយលក្ខខណ្ឌ | ប្រើជាមួយប៊ីតនៃចំនួនគត់ | |
ជាទូទៅផ្ដល់ True ឬ False | ជាទូទៅផ្ដល់ចំនួនគត់ថ្មី |
ឧទាហរណ៍ Logical៖
print(True and False)លទ្ធផល៖
Falseឧទាហរណ៍ Bitwise៖
print(6 & 3)លទ្ធផល៖
2កុំច្រឡំរវាង៖
andនិង៖
&ព្រោះវាមានគោលបំណងប្រើប្រាស់ខុសគ្នា។
and ជាមួយ &a = 6
b = 3
print(a and b)
print(a & b)លទ្ធផលអាចខុសគ្នា៖
3
2and ជាប្រតិបត្តិករតក្កវិទ្យា ខណៈ & ជាប្រតិបត្តិករ Bitwise។
or ជាមួយ |print(6 or 3)
print(6 | 3)លទ្ធផល៖
6
7~print(~5)លទ្ធផលគឺ -6 មិនមែន 2 ឬតម្លៃប៊ីតបញ្ច្រាសធម្មតាទេ ព្រោះ Python តំណាងចំនួនគត់តាមគោលការណ៍ Two’s Complement។
កូដខាងក្រោមមិនត្រឹមត្រូវ៖
print(5.5 & 2.0)ប្រតិបត្តិករ Bitwise ត្រូវប្រើជាមួយចំនួនគត់ int។
កូដខាងក្រោមបង្កើតកំហុស៖
print(5 << -1)ចំនួនទីតាំងដែលត្រូវរំកិលមិនអាចជាចំនួនអវិជ្ជមានបានទេ។
ទទួលចំនួនគត់ពីរពីអ្នកប្រើ ហើយគណនា a & b។ បង្ហាញលទ្ធផលជាគោលដប់ និងគោលពីរ។
ទទួលលេខពីរ ហើយបង្ហាញលទ្ធផល a | b និង a ^ b។
ទទួលចំនួនគត់មួយ និងចំនួនទីតាំងដែលត្រូវរំកិល។ បង្ហាញលទ្ធផលនៃ << និង >>។
កំណត់៖
VIEW = 1
EDIT = 2
DELETE = 4បង្កើតសិទ្ធិអ្នកប្រើដោយប្រើ | ហើយពិនិត្យសិទ្ធិនីមួយៗដោយប្រើ &។
ទទួលចំនួនពីអ្នកប្រើ ហើយបង្ហាញ៖
~<< 1>> 1& ផ្ដល់ប៊ីត 1 នៅពេលណា?| ផ្ដល់ប៊ីត 0 នៅពេលណា?^ ផ្ដល់ប៊ីត 1 នៅពេលណា?~5 មានលទ្ធផលប៉ុន្មាន?5 << 1 មានលទ្ធផលប៉ុន្មាន?20 >> 2 មានលទ្ធផលប៉ុន្មាន?and និង & ខុសគ្នាយ៉ាងដូចម្ដេច?bin() ប្រើសម្រាប់អ្វី?float បានដែរឬទេ?ប្រតិបត្តិករ Bitwise ក្នុង Python ប្រើសម្រាប់ធ្វើប្រតិបត្តិការលើប៊ីត 0 និង 1 នៃចំនួនគត់ ដោយ & ប្រើសម្រាប់ Bitwise AND, | សម្រាប់ Bitwise OR, ^ សម្រាប់ Bitwise XOR, ~ សម្រាប់បញ្ច្រាសប៊ីត, << សម្រាប់រំកិលប៊ីតទៅឆ្វេង និង >> សម្រាប់រំកិលប៊ីតទៅស្ដាំ។ ប្រតិបត្តិករទាំងនេះខុសពីប្រតិបត្តិករតក្កវិទ្យា and, or និង not ព្រោះវាធ្វើការដោយផ្ទាល់លើប៊ីត និងផ្ដល់លទ្ធផលជាចំនួនគត់។ Bitwise Operators ត្រូវបានប្រើក្នុងការគ្រប់គ្រងសិទ្ធិ Hardware, IoT, Network, Flags និងកម្មវិធីកម្រិតទាបផ្សេងៗ។
មិនទាន់មានមតិយោបល់ — ក្លាយជាអ្នកដំបូង!