ਪਾਈਥਨ ਬਿੱਟਵਾਈਜ਼ ਓਪਰੇਟਰ (ਲਾਜ਼ੀਕਲ ਉਤਪਾਦ, ਲਾਜ਼ੀਕਲ ਜਾਂ, ਨਿਵੇਕਲਾ ਜਾਂ, ਉਲਟਾ, ਸ਼ਿਫਟ)

ਕਾਰੋਬਾਰ

ਪਾਈਥਨ ਹੇਠਾਂ ਦਿੱਤੇ ਬਿੱਟਵਾਈਜ਼ ਓਪਰੇਟਰ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ, ਜੋ ਕ੍ਰਮਵਾਰ ਬਾਈਨਰੀ ਪੂਰਨ ਅੰਕ ਕਿਸਮ ਦੇ ਇੰਟ ਵੈਲਯੂ ਦੇ ਹਰੇਕ ਬਿੱਟ ‘ਤੇ ਲਾਜ਼ੀਕਲ ਜੋੜ, ਲਾਜ਼ੀਕਲ ਡਿਸਜੰਕਸ਼ਨ, ਐਕਸਕਲੂਸਿਵ ਡਿਸਜੰਕਸ਼ਨ, ਬਿਟਵਾਈਸ ਇਨਵਰਸ਼ਨ, ਖੱਬੇ ਬਿੱਟ ਸ਼ਿਫਟ ਅਤੇ ਸੱਜਾ ਬਿੱਟ ਸ਼ਿਫਟ ਕਰਦੇ ਹਨ।

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

ਇਸ ਭਾਗ ਵਿੱਚ, ਅਸੀਂ ਪਹਿਲਾਂ ਹੇਠਾਂ ਦਿੱਤੀ ਵਿਆਖਿਆ ਕਰਦੇ ਹਾਂ।

  • ਚੌਰਾਹੇ(AND) :&
  • ਵਿਛੋੜਾ(OR) :|
  • ਵਿਸ਼ੇਸ਼-ਜਾਂ ਓਪਰੇਸ਼ਨ(XOR) :^

ਅੱਗੇ, ਅਸੀਂ ਹੇਠਾਂ ਦਿੱਤੇ ਬਾਰੇ ਚਰਚਾ ਕਰਾਂਗੇ.

  • ਨਕਾਰਾਤਮਕ ਪੂਰਨ ਅੰਕਾਂ ‘ਤੇ ਬਿੱਟਵਾਈਜ਼ ਓਪਰੇਸ਼ਨ
  • ਬਿੱਟ ਫਲਿੱਪ( NOT) :~
  • ਬਿੱਟ ਸ਼ਿਫਟ:<<,>>

ਬਾਈਨਰੀ, ਅਸ਼ਟਲ, ਅਤੇ ਹੈਕਸਾਡੈਸੀਮਲ ਵਿੱਚ ਪੂਰਨ ਅੰਕ ਕਿਵੇਂ ਲਿਖਣੇ ਹਨ, ਅਤੇ ਹੇਠਾਂ ਦਿੱਤੇ ਫੰਕਸ਼ਨਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਬਾਈਨਰੀ, ਅਸ਼ਟਲ, ਅਤੇ ਹੈਕਸਾਡੈਸੀਮਲ ਨੰਬਰਾਂ ਅਤੇ ਸਤਰਾਂ ਨੂੰ ਕਿਵੇਂ ਬਦਲਣਾ ਹੈ, ਇਸ ਬਾਰੇ ਹੋਰ ਜਾਣਕਾਰੀ ਲਈ, ਹੇਠਾਂ ਦਿੱਤਾ ਲੇਖ ਦੇਖੋ।

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

ਨਾਲ ਹੀ, ਬਿੱਟਵਾਈਜ਼ ਓਪਰੇਸ਼ਨਾਂ ਦੀ ਬਜਾਏ ਬੂਲੀਅਨ ਮੁੱਲਾਂ (ਸੱਚ, ਗਲਤ) ‘ਤੇ ਲਾਜ਼ੀਕਲ ਓਪਰੇਸ਼ਨਾਂ (ਬੂਲੀਅਨ ਓਪਰੇਸ਼ਨਾਂ) ਲਈ, ਹੇਠਾਂ ਦਿੱਤੇ ਲੇਖ ਨੂੰ ਵੇਖੋ। ਅਤੇ, ਜਾਂ &,| ਦੀ ਬਜਾਏ ਵਰਤੋ।

ਚੌਰਾਹੇ(AND) :&ਆਪਰੇਟਰ

ਇਹ ਇੱਕ ਲਾਜ਼ੀਕਲ 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

ਵਿਸ਼ੇਸ਼-ਜਾਂ ਓਪਰੇਸ਼ਨ(XOR) :^ਆਪਰੇਟਰ

^ ਆਪਰੇਟਰ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਇੱਕ ਲਾਜ਼ੀਕਲ ਉਤਪਾਦ (XOR) ਦੀ ਉਦਾਹਰਨ, bin() ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਬਾਈਨਰੀ ਨੋਟੇਸ਼ਨ ਵਿੱਚ ਇੱਕ ਸਤਰ ਵਿੱਚ ਪਰਿਵਰਤਨ ਦੇ ਨਤੀਜੇ ਦੇ ਨਾਲ ਮਿਲਾ ਕੇ।

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

ਲਾਜ਼ੀਕਲ AND, OR, ਅਤੇ XOR ਦੇ ਹਰੇਕ ਬਿੱਟ ਲਈ ਇਨਪੁਟ ਅਤੇ ਆਉਟਪੁੱਟ ਵਿਚਕਾਰ ਸਬੰਧ ਹੇਠਾਂ ਦਿੱਤੀ ਸਾਰਣੀ ਵਿੱਚ ਦਿਖਾਇਆ ਗਿਆ ਹੈ।

ਇਨਪੁਟ 1ਇਨਪੁਟ 2ਚੌਰਾਹੇ(AND)ਵਿਛੋੜਾ(OR)ਵਿਸ਼ੇਸ਼-ਜਾਂ ਓਪਰੇਸ਼ਨ(XOR)
11110
10011
01011
00000

ਨਕਾਰਾਤਮਕ ਪੂਰਨ ਅੰਕਾਂ ‘ਤੇ ਬਿੱਟਵਾਈਜ਼ ਓਪਰੇਸ਼ਨ

ਜਦੋਂ ਇੱਕ ਨਕਾਰਾਤਮਕ ਪੂਰਨ ਅੰਕ ‘ਤੇ ਇੱਕ ਬਿੱਟਵਾਈਜ਼ ਕਾਰਵਾਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ, ਤਾਂ ਮੁੱਲ ਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਸੰਸਾਧਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਜਿਵੇਂ ਕਿ ਇਸਨੂੰ ਦੋ ਦੇ ਪੂਰਕ ਰੂਪ ਵਿੱਚ ਦਰਸਾਇਆ ਗਿਆ ਹੈ।

ਨੋਟ ਕਰੋ, ਹਾਲਾਂਕਿ, ਜੇਕਰ ਤੁਸੀਂ bin() ਜਾਂ ਫਾਰਮੈਟ() ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇੱਕ ਨੈਗੇਟਿਵ ਪੂਰਨ ਅੰਕ ਨੂੰ ਬਾਈਨਰੀ ਸਤਰ ਵਿੱਚ ਬਦਲਦੇ ਹੋ, ਤਾਂ ਪੂਰਨ ਮੁੱਲ ਵਿੱਚ ਦੋ ਦੇ ਪੂਰਕ ਫਾਰਮੈਟ ਦੀ ਬਜਾਏ ਇੱਕ ਘਟਾਓ ਚਿੰਨ੍ਹ ਹੋਵੇਗਾ।

ਜੇਕਰ ਤੁਸੀਂ ਦੋ ਦੀ ਪੂਰਕ ਪ੍ਰਤੀਨਿਧਤਾ ਵਾਲੀ ਇੱਕ ਸਤਰ ਪ੍ਰਾਪਤ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ 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(), ਫਾਰਮੈਟ(), ਆਦਿ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇੱਕ ਬਾਈਨਰੀ ਸਤਰ ਵਿੱਚ ਬਦਲਿਆ ਜਾਂਦਾ ਹੈ, ਇਹ ਦੋ ਦੇ ਪੂਰਕ ਰੂਪ ਵਿੱਚ ਨਹੀਂ ਹੁੰਦਾ ਹੈ, ਪਰ ਇੱਕ ਘਟਾਓ ਚਿੰਨ੍ਹ ਦੇ ਨਾਲ ਪੂਰਨ ਮੁੱਲ ਵਿੱਚ ਹੁੰਦਾ ਹੈ। ਇਸਲਈ, ~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

ਨਕਾਰਾਤਮਕ ਮੁੱਲਾਂ ਲਈ, ਚਿੰਨ੍ਹ ਬਿੱਟ ਨੂੰ ਵਧਾਇਆ ਅਤੇ ਸ਼ਿਫਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਅਤੇ ਸਕਾਰਾਤਮਕ/ਨਕਾਰਾਤਮਕ ਚਿੰਨ੍ਹ ਇੱਕੋ ਜਿਹਾ ਰਹਿੰਦਾ ਹੈ। ਇੱਕ ਨਕਾਰਾਤਮਕ ਮੁੱਲ ਖੱਬੇ ਪਾਸੇ 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

ਦੋ ਦੇ ਪੂਰਕ ਸਮੀਕਰਨਾਂ ਦੀਆਂ ਤਾਰਾਂ ਦੇ ਸੰਦਰਭ ਵਿੱਚ ਸੋਚਣਾ ਬਿਹਤਰ ਹੈ, ਕਿਉਂਕਿ ਸੰਖਿਆਵਾਂ ਦੇ ਰੂਪ ਵਿੱਚ ਸੋਚਣਾ ਸਪਸ਼ਟ ਨਹੀਂ ਹੈ।

Copied title and URL