Python درج ذیل بٹ وائز آپریٹرز فراہم کرتا ہے، جو بالترتیب بائنری انٹیجر ٹائپ int ویلیو کے ہر بٹ پر منطقی کنکشن، منطقی اختلاف، خصوصی اختلاط، بٹ وائز الٹا، بائیں بٹ شفٹ اور دائیں بٹ شفٹ کو انجام دیتا ہے۔
&|^~<<>>
اس سیکشن میں، ہم پہلے درج ذیل کی وضاحت کرتے ہیں۔
- چوراہا(AND) :
& - علیحدگی(OR) :
| - EXCLUSIVE-یا آپریشن(XOR) :
^
اگلا، ہم مندرجہ ذیل بات چیت کریں گے.
- منفی عدد پر بٹ وائز آپریشنز
- تھوڑا سا پلٹائیں( NOT) :
~ - تھوڑا سا شفٹ:
<<,>>
بائنری، آکٹل، اور ہیکساڈیسیمل میں انٹیجرز کیسے لکھیں، اور درج ذیل فنکشنز کا استعمال کرتے ہوئے بائنری، اوکٹل، اور ہیکسا ڈیسیمل نمبرز اور سٹرنگز کو کیسے تبدیل کیا جائے اس بارے میں مزید معلومات کے لیے، درج ذیل آرٹیکل دیکھیں۔
bin()oct()hex()format()
نیز، منطقی کارروائیوں (بولین آپریشنز) کے لیے بِٹ وائز آپریشنز کے بجائے بولین ویلیوز (سچ، غلط) پر، درج ذیل مضمون کو دیکھیں۔ &,| کے بجائے اور، یا استعمال کریں۔
چوراہا(AND) :&آپریٹر
یہ منطقی اور & کا استعمال کرنے کی ایک مثال ہے۔ آپریٹر، نتیجہ بائنری اشارے میں bin() کے ذریعے سٹرنگ میں تبدیل ہونے کے ساتھ۔
x = 9 # 0b1001 y = 10 # 0b1010 print(x & y) print(bin(x & y)) # 8 # 0b1000
علیحدگی(OR) :|آپریٹر
| کا استعمال کرتے ہوئے منطقی مصنوعہ (OR) کی ایک مثال آپریٹر، نتیجہ کے ساتھ bin() اور آؤٹ پٹ کے ذریعے بائنری اشارے میں سٹرنگ میں تبدیل ہوتا ہے۔
print(x | y) print(bin(x | y)) # 11 # 0b1011
EXCLUSIVE-یا آپریشن(XOR) :^آپریٹر
^ آپریٹر کا استعمال کرتے ہوئے منطقی پروڈکٹ (XOR) کی مثال، bin() کا استعمال کرتے ہوئے بائنری اشارے میں سٹرنگ میں تبدیلی کے نتیجے کے ساتھ مل کر۔
print(x ^ y) print(bin(x ^ y)) # 3 # 0b11
ہر ایک منطقی AND، OR، اور XOR کے لیے ان پٹ اور آؤٹ پٹ کے درمیان تعلق نیچے دیے گئے جدول میں دکھایا گیا ہے۔
| ان پٹ 1 | ان پٹ 2 | چوراہا(AND) | علیحدگی(OR) | EXCLUSIVE-یا آپریشن(XOR) |
|---|---|---|---|---|
| 1 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 | 1 |
| 0 | 1 | 0 | 1 | 1 |
| 0 | 0 | 0 | 0 | 0 |
منفی عدد پر بٹ وائز آپریشنز
جب منفی عدد پر بٹ وائز آپریشن کیا جاتا ہے، تو قدر پر اس طرح عمل کیا جاتا ہے جیسے اسے دو کی تکمیلی شکل میں ظاہر کیا گیا ہو۔
تاہم، نوٹ کریں کہ اگر آپ bin() یا format() کا استعمال کرتے ہوئے منفی عدد کو بائنری سٹرنگ میں تبدیل کرتے ہیں، تو مطلق قدر میں دو کے تکمیلی فارمیٹ کے بجائے مائنس کا نشان ہوگا۔
اگر آپ دو کی تکمیلی نمائندگی کے ساتھ سٹرنگ حاصل کرنا چاہتے ہیں، تو AND کو مطلوبہ بٹ ہندسوں کی زیادہ سے زیادہ تعداد کے ساتھ لیں، جیسا کہ ذیل میں دکھایا گیا ہے۔
- 4 بٹ کے لیے
0b1111(=0xf) - 8 بٹ کے لیے
0xff - 16 بٹ کے لیے
0xffff
آپ دو کی تکمیلی نمائندگی کی ایک تار حاصل کرسکتے ہیں (ہر بٹ الٹا ہے اور 1 شامل کیا گیا ہے)۔
x = -9 print(x) print(bin(x)) # -9 # -0b1001 print(bin(x & 0xff)) print(format(x & 0xffff, 'x')) # 0b11110111 # fff7
تھوڑا سا پلٹائیں:~آپریٹر
~ آپریٹرز کے ساتھ بٹ پلٹنے کی مثال۔
Bitwise inversion صرف ہر بٹ الٹی کی قدر نہیں ہے۔ اس آپریٹر کو استعمال کرتے وقت واپسی کی قیمت درج ذیل ہے۔~x#ERROR!-(x+1)
-(x+1)یہ قدر ان پٹ ویلیو x کو دو کی تکمیلی شکل کے طور پر غور کرنے اور تمام بٹس کو الٹ دینے کے مترادف ہے۔
جیسا کہ اوپر بتایا گیا ہے، Python میں، جب ایک منفی عدد کو bin(), format() وغیرہ کا استعمال کرتے ہوئے بائنری سٹرنگ میں تبدیل کیا جاتا ہے، تو یہ دو کی تکمیلی شکل میں نہیں ہوتا ہے، بلکہ مائنس کے نشان کے ساتھ مطلق قدر میں ہوتا ہے۔ لہذا، ~x کو براہ راست سٹرنگ میں تبدیل کرنے کا نتیجہ اصل قدر کے بٹس کے ساتھ سٹرنگ نہیں بنے گا۔
x = 9 # 0b1001 print(~x) print(bin(~x)) # -10 # -0b1010
جب ہم AND آپریشن کرتے ہیں اور اسے دو کی تکمیلی نمائندگی کی تار میں تبدیل کرتے ہیں، تو ہم دیکھ سکتے ہیں کہ اصل قدر کے بٹس الٹے ہیں۔
اس کے علاوہ، مثال کے طور پر، ایک بٹ سٹرنگ حاصل کرنے کے لیے جو کہ 4 ہندسوں کی بٹ سٹرنگ الٹی ہے جیسا کہ ہے (سائن بٹ کو چھوڑ دیا گیا ہے)، درج ذیل کے طور پر ANDed قدر کے لیے زیرو کو بھرنے کے لیے format() کا استعمال کریں۔04b'
print(bin(~x & 0xff)) print(format(~x & 0b1111, '04b')) # 0b11110110 # 0110
تھوڑا سا شفٹ:<<,>>
بٹ شفٹ آپریٹرز کا استعمال کرتے ہوئے بائیں بٹ شفٹ اور دائیں بٹ شفٹ کی مثالیں۔
x = 9 # 0b1001 print(x << 1) print(bin(x << 1)) # 18 # 0b10010 print(x >> 1) print(bin(x >> 1)) # 4 # 0b100
منفی قدروں کے لیے، سائن بٹ کو بڑھایا اور شفٹ کیا جاتا ہے، اور مثبت/منفی نشان وہی رہتا ہے۔ منفی قدر بائیں طرف 1s کی لائن کی تصویر ہے۔
x = -9 print(bin(x)) print(bin(x & 0xff)) # -0b1001 # 0b11110111 print(x << 1) print(bin(x << 1)) print(bin((x << 1) & 0xff)) # -18 # -0b10010 # 0b11101110 print(x >> 1) print(bin(x >> 1)) print(bin((x >> 1) & 0xff)) # -5 # -0b101 # 0b11111011
بہتر ہے کہ دو کے تکمیلی تاثرات کے تاروں کے لحاظ سے سوچیں، کیونکہ اعداد کے لحاظ سے سوچنا واضح نہیں ہے۔


