பைதான் பிட்வைஸ் ஆபரேட்டர்கள் (தருக்க தயாரிப்பு, தருக்க OR, பிரத்தியேக OR, தலைகீழ், மாற்றம்)

வணிக

பைதான் பின்வரும் பிட்வைஸ் ஆபரேட்டர்களை வழங்குகிறது, அவை முறையே ஒரு பைனரி முழு எண் வகை முழு மதிப்பின் ஒவ்வொரு பிட்டிலும் தருக்க இணைப்பு, தருக்க விலகல், பிரத்தியேக டிஸ்ஜங்க்ஷன், பிட்வைஸ் இன்வெர்ஷன், இடது பிட் ஷிப்ட் மற்றும் வலது பிட் ஷிஃப்ட் ஆகியவற்றைச் செய்கிறது.

  • &
  • |
  • ^
  • ~
  • <<
  • >>

இந்த பகுதியில், முதலில் பின்வருவனவற்றை விளக்குகிறோம்.

  • குறுக்குவெட்டு(AND) :&
  • விலகல்(OR) :|
  • எக்ஸ்க்ளூசிவ்-அல்லது செயல்பாடு(XOR) :^

அடுத்து, பின்வருவனவற்றைப் பற்றி விவாதிப்போம்.

  • எதிர்மறை முழு எண்களில் பிட்வைஸ் செயல்பாடுகள்
  • பிட் ஃபிளிப்( NOT) :~
  • பிட் மாற்றம்:<<,>>

பைனரி, ஆக்டல் மற்றும் ஹெக்ஸாடெசிமல் ஆகியவற்றில் முழு எண்களை எவ்வாறு எழுதுவது மற்றும் பின்வரும் செயல்பாடுகளைப் பயன்படுத்தி பைனரி, எண்கள் மற்றும் ஹெக்ஸாடெசிமல் எண்கள் மற்றும் சரங்களை எவ்வாறு மாற்றுவது என்பது பற்றிய கூடுதல் தகவலுக்கு, பின்வரும் கட்டுரையைப் பார்க்கவும்.

  • bin()
  • oct()
  • hex()
  • format()

மேலும், பிட்வைஸ் செயல்பாடுகளுக்குப் பதிலாக பூலியன் மதிப்புகளில் (உண்மை, தவறு) தருக்க செயல்பாடுகளுக்கு (பூலியன் செயல்பாடுகள்), பின்வரும் கட்டுரையைப் பார்க்கவும். &,| என்பதற்கு பதிலாக பயன்படுத்தவும்.

குறுக்குவெட்டு(AND) :&இயக்குபவர்

இது தர்க்கரீதியான மற்றும் & ஆபரேட்டர், இதன் விளைவாக bin() மூலம் பைனரி குறியீட்டில் ஒரு சரமாக மாற்றப்பட்டது.

x = 9   # 0b1001
y = 10  # 0b1010

print(x & y)
print(bin(x & y))
# 8
# 0b1000

விலகல்(OR) :|இயக்குபவர்

| ஆபரேட்டர், இதன் விளைவாக பைனரி குறியீட்டில் பின்() மற்றும் வெளியீடு மூலம் ஒரு சரமாக மாற்றப்படுகிறது.

print(x | y)
print(bin(x | y))
# 11
# 0b1011

எக்ஸ்க்ளூசிவ்-அல்லது செயல்பாடு(XOR) :^இயக்குபவர்

^ ஆபரேட்டரைப் பயன்படுத்தி தருக்கப் பொருளின் (XOR) உதாரணம், பின்() ஐப் பயன்படுத்தி பைனரி குறியீட்டில் ஒரு சரமாக மாற்றுவதன் விளைவாக இணைக்கப்பட்டுள்ளது.

print(x ^ y)
print(bin(x ^ y))
# 3
# 0b11

லாஜிக்கல் AND, OR மற்றும் XOR இன் ஒவ்வொரு பிட்டிற்கும் உள்ளீடு மற்றும் வெளியீட்டிற்கு இடையே உள்ள தொடர்பு கீழே உள்ள அட்டவணையில் காட்டப்பட்டுள்ளது.

உள்ளீடு 1உள்ளீடு 2குறுக்குவெட்டு(AND)விலகல்(OR)எக்ஸ்க்ளூசிவ்-அல்லது செயல்பாடு(XOR)
11110
10011
01011
00000

எதிர்மறை முழு எண்களில் பிட்வைஸ் செயல்பாடுகள்

எதிர்மறை முழு எண்ணில் பிட்வைஸ் செயல்பாடு செய்யப்படும்போது, ​​​​மதிப்பு இரண்டின் நிரப்பு வடிவத்தில் வெளிப்படுத்தப்படுவது போல் செயலாக்கப்படும்.

எவ்வாறாயினும், பின்() அல்லது 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

பிட் ஃபிளிப்:~இயக்குபவர்

~ஆபரேட்டர்களுடன் பிட் புரட்டுவதற்கான எடுத்துக்காட்டு.

பிட்வைஸ் இன்வெர்ஷன் என்பது தலைகீழான ஒவ்வொரு பிட்டின் மதிப்பு மட்டுமல்ல. இந்த ஆபரேட்டரைப் பயன்படுத்தும் போது திரும்பும் மதிப்பு பின்வருமாறு.
~x#ERROR!-(x+1)

-(x+1)இந்த மதிப்பு, உள்ளீட்டு மதிப்பு x ஐ இரண்டின் நிரப்பு வடிவமாகக் கருதி அனைத்து பிட்களையும் தலைகீழாக மாற்றுவதற்குச் சமம்.

மேலே குறிப்பிட்டுள்ளபடி, பைத்தானில், bin(), format() போன்றவற்றைப் பயன்படுத்தி ஒரு எதிர்மறை முழு எண் பைனரி சரமாக மாற்றப்படும்போது, ​​​​அது இரண்டின் நிரப்பு வடிவத்தில் இல்லை, ஆனால் ஒரு கழித்தல் குறியுடன் முழுமையான மதிப்பில் இருக்கும். எனவே, ~x ஐ நேரடியாக சரமாக மாற்றினால், அசல் மதிப்பின் பிட்கள் தலைகீழாக மாற்றப்பட்ட ஒரு சரம் வராது.

x = 9  # 0b1001

print(~x)
print(bin(~x))
# -10
# -0b1010

நாம் AND செயல்பாட்டைச் செய்து, அதை இரண்டின் நிரப்பு பிரதிநிதித்துவத்தின் சரமாக மாற்றும்போது, ​​அசல் மதிப்பின் பிட்கள் தலைகீழாக இருப்பதைக் காணலாம்.

கூடுதலாக, எடுத்துக்காட்டாக, ஒரு பிட் சரத்தைப் பெற, 4-இலக்க பிட் சரத்தை அப்படியே தலைகீழாக மாற்றவும் (சைன் பிட் தவிர்க்கப்பட்டது), பின்வருமாறு ANDed மதிப்புக்கான பூஜ்ஜியங்களை நிரப்ப ஃபார்மேட்() ஐப் பயன்படுத்தவும்.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

எதிர்மறை மதிப்புகளுக்கு, சைன் பிட் நீட்டிக்கப்பட்டு மாற்றப்படும், மேலும் நேர்மறை/எதிர்மறை குறி அப்படியே இருக்கும். எதிர்மறை மதிப்பு என்பது இடதுபுறம் உள்ள 1 வி வரியின் படம்.

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

எண்களின் அடிப்படையில் சிந்திப்பது தெளிவாக இல்லாததால், இருவரின் நிரப்பு வெளிப்பாடுகளின் சரங்களின் அடிப்படையில் சிந்திப்பது நல்லது.