2012.08.05.
10:16

Írta: harsanyireka

Hivatkozások 7.: Bitenkénti operátorok

A változók bit szintjén végzik el a számítást. Arduinoban az integer 16 bites. 

Bináris / kettes számrendszer: http://hu.wikipedia.org/wiki/Kettes_sz%C3%A1mrendszer

 

& (bitenkénti és)

Ha mindkét bemeneti bit értéke 1 akkor a kapott kimeneti eredmény 1 bit. Ha az egyik vagy minkettő bemeneti bit 0 akkor a kapott kimeneti eredmény 0.

  A
  B 
   A&B
  0
  0
  0
  1
  0
  0
  0
  1
  0
  1
  1
  1

Arduino példa:

    int a =  92;    // binárisan: 0000000001011100
    int b = 101;    // binárisan: 0000000001100101
    int c = a & b;  // eredmény: 0000000001000100, 
// vagy 68 a tizes számrendszerben.
 

 

| (bitenkénti megnegedő vagy)

Ha legalább az egyik bit 1 akkor az eredmény is 1. Ha mindkettő beneti bit 0 akkor a kimeneti bit 0.

A    
  B  
  A|B  
0  
  0
  0
1
  0
  1
0
  1
  1
1
  1
  1
Arduino példa: 
    int a =  92;    // binárisan: 0000000001011100
    int b = 101;    // binárisan: 0000000001100101
    int c = a | b;  // eredmény:    0000000001111101, 
// vagy 125 a tizes számrendszerben
 

 

 

^ (bitenkénti kizáró vagy)

Hasonloan működik mint a bitenkénti megengedő vagy operátor, azzal a különbséggel, hogy ha mindkét bemeneti bit 1 akkor a kapott eredmény 0.

A  
B  
 A^B 
0
0
 0
1
0
 1
0
1
 1
1
1
 0
Arduino példa:
    int x = 12;     // binárisan: 1100
    int y = 10;     // binárisan: 1010
    int z = x ^ y;  // eredmény: 0110, 
// vagy 6 a tizes számrendszerben

 

 

~ (bitenkénti negálás)

Egy bitre alkalmazzuk. Ellenkező értéket vesz fel: 0-ból 1, 1-ből 0 lesz.

A  
 ~A 
0
1
1
0

Arduino példa:

    int a = 103;    // binárisan:  0000000001100111
    int b = ~a;     // eredmény:  1111111110011000 = -104
// tehát -x-1

 

 

<< (bitenkénti eltolás balra)

A szám bitjeit tolja el balra a megadott értékkel.

1111111111111000
<< 2
1111111111100000

 

Arduino szintaxis:

változó << bitek száma

 

 

>> (bitenkénti eltolás jobbra)

A szám bitjeit tolja el jobbra a megadott értékkel.

0000000000001000
>> 2
0000000000000010

 

Arduino szintaxis:

változó >> bitek száma

 

Példa:
    int a = 5;        // bináris: 0000000000000101
    int b = a << 3;   // bináris: 0000000000101000, 
// vagy 40 tizes számrendszerben int c = b >> 3; // bináris: 0000000000000101,
// vagy 5-tel vissza, a kezdőértékhez jutunk
 

 

forrás: http://arduino.cc/en/Reference/BitwiseAnd, http://www.arduino.cc/playground/Code/BitMath, 

http://arduino.cc/en/Reference/BitwiseXorNot, http://arduino.cc/en/Reference/Bitshift, 

http://hu.wikipedia.org/wiki/Oper%C3%A1torok_(C%2B%2B) 

cc-by-sa3s.jpg

Szólj hozzá!

Címkék: hivatkozások

A bejegyzés trackback címe:

https://harsanyireka.blog.hu/api/trackback/id/tr744691892

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása