Bit Mask - TeachMeSoft

Bit Mask



Bit Mask


Bit Mask (Topeng bit) digunakan untuk mengakses bit tertentu dalam satu byte data. Ini sering berguna sebagai metode iterasi, misalnya saat mengirim byte data secara seri, keluar satu pin. Dalam contoh ini pin harus mengubah statusnya dari tinggi ke rendah untuk setiap bit dalam byte yang dikirimkan. Ini dilakukan dengan menggunakan apa yang dikenal sebagai operasi bitwise dan bit mask.

Operasi bitwise melakukan fungsi logis yang berpengaruh pada level bit. Operasi bitwise standar termasuk AND (&) OR (|) Shift Kiri (<<) dan Shift Kanan (>>).

Operator AND (&) akan menghasilkan 1 pada setiap posisi bit di mana kedua nilai input adalah 1. Misalnya:
x:  10001101
    y:  01010111
& y:  00000101


Operator OR (|) (juga dikenal sebagai Inclusive Or) akan menghasilkan 1 pada setiap posisi bit di mana nilai inputnya adalah 1. Misalnya:

 10001101
    y  01010111
 11011111



Operator Left Shift (<<) akan menggeser nilai ke kiri berapa kali yang ditentukan. Sebagai contoh:

= 1010
        x = y << 1
yields: x = 0100


Semua bit dalam byte digeser satu posisi ke kiri dan bit di ujung kiri turun.

Operator Right Shift (>>) bekerja secara identik ke shift kiri kecuali bahwa itu menggeser nilai ke kanan berapa kali yang ditentukan Misalnya:

1010
            x = y >> 1
yields : x 0101


Semua bit dalam byte digeser satu posisi ke kanan dan bit di ujung kanan turun.

Sebagai contoh praktis, mari kita ambil nilai 170, biner 10101010. Untuk mengeluarkan nilai ini dari pin 7 kode mungkin terlihat sebagai berikut:

byte transmit = 7; //define our transmit pin
byte data = 170; //value to transmit, binary 10101010
byte mask = 1; //our bitmask
byte bitDelay = 100;

void setup()
{
   pinMode(transmit,OUTPUT);
}

void loop()
{
  for (mask = 00000001; mask>0; mask <<= 1) { //iterate through bit mask
    if (data & mask){ // if bitwise AND resolves to true
      digitalWrite(transmit,HIGH); // send 1
    }
    else{ //if bitwise and resolves to false
      digitalWrite(transmit,LOW); // send 0
    }
    delayMicroseconds(bitDelay); //delay
  }
}


Di sini kita menggunakan loop UNTUK untuk beralih melalui nilai bit mask, menggeser nilai satu posisi yang tersisa setiap kali melalui loop. Dalam contoh ini kita menggunakan operator << = yang persis seperti operator << kecuali bahwa itu memadatkan pernyataan


00000001
10101010
  ________
  00000000


Dan pin output kami disetel ke 0. Kedua kalinya ia melingkarkan mask = 00000010, jadi operasi kami terlihat seperti:


00000010
10101010
  ________
  00000010


Dan pin output kami disetel ke 1. Loop akan terus beralih melalui setiap bit pada mask sampai 1 digeser ke kiri dari ujung 8 bit dan mask kami = 0. Kemudian semua 8 bit telah dikirim dan loop kita keluar.


SUMBER

  • [1] https://www.arduino.cc/en/Tutorial/BitMask


    Disqus comments