I Java används signed bytes som standard. Signed byte kan ha värde mellan -128 till +127
Unsigned bytes kan inte vara ett negativt värde. Värdet på en unsigned byte kan vara 0 till 255
En byte är 8 bitar. Alltså 8 ettor/nollor, dessa ettor och nollor kallas Binärtal
01010101 = 1 byte
Räkna decimaltal, binärtal, hexadecimal:
En Hexadecimal siffra/bokstav motsvara 4 bits (1 nibble).
Hex F = 1111 Binärt.
Om man har två tecken i ett hexadecimal tal är det 8 bitar.
Hex FF = 11111111 Binärt.
Hex F0 = 11110000 Binärt.
För att tilldela binära värden till en byte i Java kan man skriva så här.
byte b = (byte) 0b100001;
Variabel b har nu värdet 33.
För att tilldela hexadecimala värden till en byte.
byte b = (byte) 0x4A;
Variabel b har nu värdet 74
Bitwise operatorer i Java
NOT = ~
- Flippar bitarna så alla ettor blir nollor och vise versa.
- ~1010 = 0101
- Jämför två binära tal. Om en 1a finns i båda talen på samma position blir resultatet 1 på den platsen.
- 1101 & 0111 = 0101
- Jämför två binära tal. Om endast en 1a finns i något av talen blir resultatet 1 på den platsen.
- 0101 | 1100 = 1101
- Samma som OR men om talet är lika på båda blir resultatet 0.
- 0101 ^ 1100 = 1001
Bit Shift operatorer i Java
Bit Shift left = <<
- Flyttar bitarna till vänster. Man anger hur många steg med en siffra efter operatorerna << 2
- 0110 << 1 = 1100
- Den nya biten/bitarna som kommer in från vänster sida har alltid värdet 0.
- Samma som bit shift left men åt höger
- 1100 0000 >>> 2 = 0011 0000
- Den nya biten/bitarna som kommer in från vänster sida har alltid värdet 0.
Signed Bit Shift right (används nästan aldrig i praktiken) = >>
- Samma som Bit Shift left men behåller teckenbiten (MSB biten längst till vänster).
- 1110 0000 >> 2 = 1111 1000
- 0110 0000 >> 2 = 0001 1000
public static void main(String args[]) {
int a = 0b0110; // 6
int b = 0xE; //14, 1110
System.out.println("~a : " + (~a));
System.out.println("a & b : " + (a & b));
System.out.println("a | b : " + (a | b));
System.out.println("a ^ b : " + (a ^ b));
System.out.println("a << b : " + (a << b));
System.out.println("a >> 2 : " + (a >> 2));
}
Resultat:
~a : -7
a & b : 6
a | b : 14
a ^ b : 8
a << b : 98304
a >> 2 : 1
Inga kommentarer:
Skicka en kommentar