Informatika gyűjtemény

Egy szinttel feljebb 24. óra

2004050607080910

NézetNyomtat

Bitműveletek

Néhány alapművelet


MűveletJava szintaxisPascal szintaxisEredmény
Léptetés balrax<<nx SHL naz eredmény egy szám, mely x bitjeit tartalmazza, de n lépéssel balra léptetve
Léptetés jobbrax>>nx SHR naz eredmény egy szám, mely x bitjeit tartalmazza, de n lépéssel jobbra léptetve
Bitszintű VAGYx | yx OR yaz eredmény egy szám, aminek minden i. bitjére igaz, hogy pontosan akkor 1, ha x vagy y i. bitje is 1
Bitszintű ÉSx & yx AND yaz 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~xaz 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