Apa itu Byte dan Bit dalam Komputer dan apa hubungannya dengan Pixel dan ASCII

Wuriyanto
TelkomDev
Published in
6 min readDec 25, 2019
1 byte = 8 bits

Anda mungkin sudah mendengar bahwa apapun yang berada di komputer adalah 1 dan 0. Komputer hanya mengenal, menyimpan, memproses dan mengetahui informasi dengan dua kondisi atau state atau keadaan atau bilangan 1 dan 0 saja. Bisa juga digambarkan dengan ON dan OFF, bisa juga dengan boolean TRUE dan FALSE.1 dan 0 dalam computer science disebut dengan binary number system atau sistem bilangan biner. Jika anda seorang electrical engineer atau pengembang chip, 1 dan 0 menggambarkan electric signal yang sedang mengalir.

Selain sistem bilangan biner, ada sistem bilangan komputer lain lagi yang mungkin anda perlu tau (apa lagi jika anda seorang software engineer).

  • Binary atau biner(sudah kita bahas sedikit diatas). Biasanya populer disebut dengan base 2. Karena hanya ada dua yaitu 1 dan 0.
  • Decimal number system. Biasa disebut bilangan base 10. Karena bilangan ini memiliki 10 dijit bilangan, yaitu 0–9.
  • Octal number system. Biasa disebut bilangan base 8. Karena bilangan ini memiliki 8 dijit bilangan, yaitu 0–7.
  • Hexadecimal number system. Biasa disebut bilangan base 16. Berbeda dengan sistem bilangan sebelumnya diatas. 16 dijit Hexadecimal adalah campuran 0–9 dan A — F. Biasanya digunakan untuk merepresentasikan alamat memori.

Nah apa itu bit? kalau pada konsep fisika, bit bisa dibayangkan adalah sebuah atom. Karena bit ada unit terkecil dari storage komputer. Storage yang dimaksud disini bisa saja hard drive maupun RAM.

Didalam komputer, 1 bit digambarkan dalam satu state didalam sistem bilangan biner. Jadi 1 bit bisa bernilai 1 atau 0. Dan kita tau, semua yang ada di komputer adalah 1 dan 0, maka termasuk informasi yang disimpan didalamnya juga direpresentasikan dengan 1 dan 0.

1 bit tidaklah cukup untuk menyimpan sebuah informasi yang berguna. Maka diperlukan satuan untuk menggabungkan kumpulan banyak bit supaya bisa menyimpan informasi. Satuan tadi disebut byte. 1 byte adalah kumpulan dari 8 bit dijit bilangan biner. Jadi 1 byte = 8 bit.

1 byte = 8 bit, jadi dengan perhitungan matematika akan diperoleh 256 pola dengan menghitung 2 pangkat 8 (karena bilangan biner adalah bilangan base 2). Dalam computer science, 256 pola digunakan untuk menyimpan informasi seperti set karakter ASCII dan ANSI(extended ASCII), satuan warna untuk (Red Green Blue atau RGB). Istilah byte sendiri untuk pertama kalinya diperkenalkan oleh Dr. Werner Buccholz tahun 1956 ketika dia bekerja sebagai ilmuwan di IBM.

Kita sudah tau jika komputer hanya mengenal, menyimpan, dan memproses informasi dengan 1 dan 0 saja. Maka pada jaman dahulu para ilmuwan komputer membuat standar yang disetujui untuk digunakan bersama. Standar tersebut beberapa diantaranya adalah ASCII dan satuan warna yang saya bahas sebelumnya.

ASCII dan ANSI(superset dari ASCII, ada yang menyebutnya extended ASCII) adalah konsep encoding yang digunakan komputer untuk memetakan dan merepresentasikan tiap karakter bahasa Inggris kedalam sistem numeric yang disebut alphanumeric codes. ASCII menggunakan satuan decimal untuk merepresentasikan tiap karakter bahasa Inggris. Dari 0 - 127 adalah alphanumeric codes yang karakternya hampir anda gunakan setiap hari. Karena kumpulan karakter tersebut berada pada keyboard anda.

https://ascii.cl/

Dari kumpulan karakter ASCII diatas, beberapa diantaranya adalah yang non-printed (saya menyebutnya karakter-karakter yang tidak tampak) seperti space dan tab. Nah karakter-karakter diatas ketika diproses maupun disimpan membutuhkan 1 byte memori dari komputer kita. Termasuk space dan tab (ini yang saya sebut non-printed), tetap membutuhkan 1 byte memori.

Selanjutnya adalah karakter ANSI (extended ASCII) dimulai dari 128–225 alphanumeric codes.

Extended ASCII

Kumpulan karakter ANSI(extended ASCII) beberapa diantaranya adalah karakter dengan aksen dan juga simbol khusus.

Mungkin anda bertanya-tanya, bagaimana dengan karakter lain seperti Mandarin, huruf Arab, huruf Jawa, huruf Hindi ataupun huruf Jepang. Karakter-karakter tersebut masuk kedalam Unicode. Unicode biasanya membutuhkan 2–4 byte memori untuk memproses maupun menyimpannya.

Bagaimana komputer mengirim data melalui network Protocol seperti HTTP, TCP, dan AMQP?

Data yang dikirim melalui network protocol sebenarnya adalah bytes stream. Karena lagi-lagi, komputer hanya mengenal angka.

Katakanlah aplikasi mobile kita membutuhkan data seperti ini yang diambil dari server.

Contoh JSON data yang dikirim melewati network

Data tersebut sebenarnya tidak berbentuk plain seperti diatas, tapi sudah di serialize terlebih dahulu ke dalam bentuk JSON, kemudian dikonversi ke bytes stream. Kurang lebih data diatas berbentuk seperti ini ketika dikirim melewati network.

1111011 100010 1100110 1101001 1110010 1110011 1110100 1001110 1100001 1101101 1100101 100010 111010 100000 100010 1010111 1110101 1110010 1101001 1111001 1100001 1101110 1110100 1101111 100010 101100 100000 100010 1101100 1100001 1110011 1110100 1001110 1100001 1101101 1100101 100010 111010 100000 100010 1001101 1110101 1110011 1101111 1100010 1100001 1110010 100010 1111101

Saya membuat program sederhana dengan Golang untuk mengetahui representasi binary data dari sebuah sequence of bytes.

Golang snippet untuk melihat sequence bytes dalam binary

Bagaimana komputer menyimpan dan memproses sebuah gambar?

Sudah kita bahas sedikit diatas tadi, pola 256 selain digunakan untuk encoding karakter, pola 256 juga digunakan untuk merepresentasikan nilai sebuah warna.

Kombinasi RGB = 1 Pixel

Pada dasarnya komputer membutuhkan kombinasi RGB untuk membentuk satu buah warna. Tiap kombinasi RGB yang dibentuk membutuhkan 3 byte memori yang berarti dibutuhkan 3 byte untuk tiap pixel pada sebuah gambar yang disimpan maupun diproses pada komputer. Jadi dapat disimpulkan 3 byte/pixel atau 24 bit/pixel. Gambar yang kita tampilkan pada layar komputer kita sebenarnya tidak lebih dari kumpulan kombinasi RGB yang bersatu menjadi sebuah pixel seperti gambar dibawah ini.

Kombinasi RGB menjadi satuan pixel

Gambar diatas menjelaskan citra digital yang sebenarnya adalah sebuah kumpulan pixel yang dibentuk dari kombinasi RGB(Red Green Blue).

Membuat citra digital dengan Numpy

Untuk memudahkan pengolahan sebuah citra digital, maka sebuah citra digital direpresentasikan menjadi array of bytes. Array of bytes tersebut adalah kumpulan dari bytes array 2 dimensi yang kita asumsikan tiap valuenya adalah unsigned integer 8 bit (uint8)atau bilangan positive decimal. Jumlah kolom pixel adalah lebar(width) dari citra digital tersebut. Sedangkan jumlah baris pixel adalah tinggi (height) dari citra digital tersebut.

Kita akan contohkan membuat citra digital dengan numpy kemudian keseluruhan value array-nya adalah 0. Sehingga keseluruhan gambarnya akan menjadi berwarna hitam. Kita akan buat citra digital tersebut dengan menggunakan numpy.zeros dan matplotlib. Citra digital yang akan kita buat beresolusi 500x500 pixel dengan tiap value-nya adalah array dengan panjang 3 (merepresentasikan jumlah bytes pada tiap pixel) dan tiap value-nya adalah 0.

numpy zeros

Variabel black_screen diatas akan nampak seperti ini, yaitu array 2 dimensi dengan array memiliki panjang 3 disetiap dimensinya.

[[[0 0 0]
[0 0 0]
[0 0 0]
...
[0 0 0]
[0 0 0]
[0 0 0]]

Baris code diatas ketika dijalankan akan menghasilkan output seperti ini.

Citra digital dibuat dengan numpy dan matplotlib

Saat ini Chip modern dapat menampung sampai 4 miliar benda ini. Anda tau benda dibawah ini? ya,, sebuah transistor.

Transistor

Pada Chip modern ukuran transistornya hanya berukuran 4 atom. Bisa diperkirakan pucuk rambut anda bisa menampung sekitar 10–15 butir transistor yang berada pada Chip modern. Satu transistor ini merepresentasikan satu electrical signal 1 dan 0 atau ON dan OFF. Jadi bisa disimpulkan juga, untuk menampilkan kombinasi RGB(Red Green Blue), dibutuhkan 24 transistor .

Pengetahuan binary number system menjadi aspek yang sangat penting dalam computer science. Mengetahui cara kerjanya dapat menjadi modal penting ketika anda mempelajari bidang ilmu seperti computer vision, machine learning, AI, elektronika, robotik, dan pengolahan citra digital.

Sekian..

--

--