Bitműveletek
Néhány alapművelet
Művelet | Java szintaxis | Pascal szintaxis | Eredmény |
Léptetés balra | x<<n | x SHL n | az eredmény egy szám, mely x bitjeit tartalmazza, de n lépéssel balra léptetve |
Léptetés jobbra | x>>n | x SHR n | az eredmény egy szám, mely x bitjeit tartalmazza, de n lépéssel jobbra léptetve |
Bitszintű VAGY | x | y | x OR y | az eredmény egy szám, aminek minden i. bitjére igaz, hogy pontosan akkor 1, ha x vagy y i. bitje is 1 |
Bitszintű ÉS | x & y | x AND y | az eredmény egy szám, aminek minden i. bitjére igaz, hogy pontosan akkor 1, ha x és y i. bitje is 1 |
Bitszintű Ellentett | ~x | ~x | az eredmény egy szám, aminek minden i. bitjére igaz, hogy pontosan akkor 1, ha x i. bitje 0 |
Megjegyzés
Előjelek kezelése Jávában:
leírás.
Például
Java: 1<<5 = 2^5 = 32
Pascal: 1 SHL 5 = 2^5 = 32
Adott bit beállítása 1-re egy számban
Vesszük az 1 számot, és eltoljuk annyival balra, ahányadik bitet 1-re akarjuk állítani. Az így kapott eredményt összevagyoljuk az eredeti számmal:
int setBit(int num, int pos) {
return num | (1 << pos);
}
PROCEDURE setBit(VAR num: INTEGER; pos: INTEGER);
BEGIN
num := num OR (1 SHL pos);
END;
Adott bit beállítása 0-ra egy számban
Vesszük az 1 számot, és eltoljuk annyival balra, ahányadik bitet 0-re akarjuk állítani. Az így kapott eredmény bitszintű ellentettjét összeéseljük az eredeti számmal:
int clearBit(int num, int pos) {
return num & ~(1 << pos);
}
PROCEDURE clearBit(VAR num: INTEGER; pos: INTEGER);
BEGIN
num := num AND ~(1 SHL pos);
END;
Adott bit értékének tesztelése egy számban
Vesszük az 1 számot, és eltoljuk annyival balra, ahányadik bitet tesztelni akarjuk. Az így kapott eredményt összeéseljük az eredeti számmal, és megnézzük, hogy az eredmény nemnulla-e.
boolean testBit(int num, int pos) {
return (num & (1 << pos)) != 0;
}
FUNCTION testBit(num: INTEGER; pos: INTEGER): BOOLEAN;
BEGIN
testBit := (num AND (1 SHL pos)) <> 0;
END;
Feladat