2014-05-04 6 views
5

ich eine bitweise nicht auf einem Byte auszuführen versucht bin, wie folgt aus:Performing bitweise nicht auf einem Byte

byte b = 125; 
byte notb = ~b; // Error here 

Das funktioniert nicht, weil die nicht Operator nur mit Integer-Typen arbeitet. Ich kann dies tun, und dies scheint zu funktionieren:

byte b = 125; 
byte notb = (byte)((~b) & 255); 

Dies scheint zu funktionieren, weil ihre Anzahl not'ing, dann alle Bits nach dem achten Bit auf 0 Spiegeln, dann ist es in ein Byte zu werfen. Ich frage mich, ob es einen besseren Weg gibt, dies zu tun oder einen einfacheren Weg, den ich einfach übersehe?

Antwort

5

Es sieht nicht so aus, als plane Lynx seine Antwort zu aktualisieren, so dass bitweise Operatoren für die zukünftige Bezugnahme auf byte gut funktionieren. Sie geben nur einen int zurück, der keiner Variablen vom Typ byte zuweisbar ist. Sie brauchen nur eine Besetzung hier:

byte notb = (byte)~b; 
+0

Ja, Sie haben Recht. – Lynx

2

Dies ist im Grunde besser als die, die Sie geschrieben haben, weil es klarer ist. Ich habe einige Themen zu diesem Thema gelesen, aber es scheint, als ob Sie nicht wirklich ein bitweises Byte verwenden können.

byte b = 125; 
byte notb= (byte)~b; // result is 130 
0

wird diese

arbeiten b int
byte b = 125; 
byte notb = (byte)~(int)b; 

Dies wirft und dann ~ tun und es zurück zu byte Gießen.

Ich habe das Ergebnis verifiziert. Sowohl Ihr als auch mein Code gibt 130 aus.