Wie funktionieren bitweise Operationen in Python?

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Wie funktionieren bitweise Operationen in Python?

by Anonymous » 10 Jun 2025, 14:19

Ich habe heute etwas über bitweise Operationen gelernt und habe gelernt, dass nicht (~) alle Bits invertiert, z. B.:

01010
to
10101
< /code>

, was bedeutet, dass ~ 10 -5 sein sollte, aber stattdessen habe ich gesehen, dass es -11 ist (gemäß der Python -Befehlszeile), was < /p>

ist01010
to
11011
< /code>

Nur zwei der Bits wurden invertiert. Kann jemand erklären, warum es nicht 10101 ist? Eingänge in (im Byte -Modus) 11110101 gibt mir -11, aber dasselbe in meinem Code eingegebene enthält -117: < /p>

def binaryToInt(biNum, bUnsigned = False):
iNum = 0
bSign = int(biNum[0]) if not (bUnsigned or biNum[-1] == "u") else 0
biNum = biNum[(1 if not (bUnsigned or biNum[-1] == "u") else 0):(len(biNum) if biNum[-1] != "u" else -1)]
for i in xrange(len(biNum)):
iNum += int(biNum) * 2**(len(biNum) - 1 - i)
return (iNum if not bSign else -iNum)

def intToBinary(iNum, bUnsigned = False):
bSign = "1" if iNum < 0 else "0"
iLoopNum = int((iNum ** 2) ** 0.5) #make positive!
biNum = ""
while iLoopNum:
biNum += str(iLoopNum%2)
iLoopNum /= 2
return bSign + biNum[::-1] if not bUnsigned else biNum[::-1] + "u"
< /code>

Kann einer von Ihnen das erklären? < /p>

Top