kodingup.camp

Beranda/JavaScript Mastery: Fundamentals

Pemrosesan Informasi Digital

Modul 2 dari 165 menit bacaDigital information processing

Isi modul

    Kenapa ini penting

    Semua yang ada di komputer, entah teks, foto, lagu, video, atau kode program, pada akhirnya disimpan sebagai deretan 0 dan 1. Kalau kamu paham ini, banyak hal jadi masuk akal: kenapa ukuran file ditulis dalam KB/MB/GB, kenapa ada batas angka terbesar yang bisa disimpan, dan kenapa beberapa operasi angka di JavaScript menghasilkan sesuatu yang "aneh". Modul ini juga jadi fondasi untuk modul representasi teks dan angka berikutnya.

    Konsep inti

    Kenapa komputer memakai 0 dan 1?

    Di dalam chip komputer ada miliaran transistor, yaitu saklar listrik super kecil. Saklar hanya punya dua keadaan yang mudah dibedakan: mati (tidak ada tegangan) atau hidup (ada tegangan). Kita menamai dua keadaan itu 0 dan 1.

    Kenapa tidak pakai 10 keadaan seperti angka desimal? Karena membedakan 10 tingkat tegangan secara akurat itu sulit dan rawan salah, apalagi kalau ada gangguan listrik sedikit saja. Membedakan dua keadaan (ada/tidak ada) jauh lebih stabil, murah, dan cepat. Analoginya seperti lampu kamar: kamu langsung tahu lampu itu nyala atau mati, tapi akan sulit membedakan 10 tingkat redup dengan mata telanjang.

    Sistem bilangan yang hanya memakai dua angka (0 dan 1) disebut biner (binary).

    Bit dan byte

    Berapa banyak kombinasi yang bisa dibuat? Setiap bit menggandakan jumlah kemungkinan:

    Jumlah bit Kombinasi Contoh pemakaian
    1 2 ya/tidak, on/off
    2 4 00, 01, 10, 11
    4 16 satu digit heksadesimal
    8 (1 byte) 256 satu karakter ASCII, satu kanal warna (0-255)
    16 65.536
    32 sekitar 4,29 miliar alamat IPv4

    Rumusnya: n bit menghasilkan 2ⁿ kombinasi. Karena itu warna di web memakai angka 0 sampai 255 per kanal merah, hijau, biru: setiap kanal disimpan dalam 1 byte (256 nilai).

    Satuan ukuran data

    Satuan Besar (desimal, SI) Besar (biner, IEC)
    Kilobyte (KB) / Kibibyte (KiB) 1.000 byte 1.024 byte
    Megabyte (MB) / Mebibyte (MiB) 1.000.000 byte 1.048.576 byte
    Gigabyte (GB) / Gibibyte (GiB) 1.000.000.000 byte 1.073.741.824 byte

    Ada dua cara hitung. Produsen harddisk biasanya memakai hitungan 1.000, sedangkan sebagian sistem operasi memakai hitungan 1.024. Itulah sebabnya SSD "512 GB" terlihat sekitar 476 GB di Windows. Tidak ada yang dicuri, hanya beda satuan.

    Hati-hati juga dengan bit vs byte pada internet. Kecepatan internet ditulis dalam Mbps (megabit per detik), sedangkan ukuran file dalam MB (megabyte). Internet 100 Mbps berarti maksimal sekitar 12,5 MB per detik (100 ÷ 8).

    Semua data adalah angka

    Komputer tidak tahu apa itu "huruf A" atau "warna merah". Ia hanya tahu angka biner. Maknanya ditentukan oleh kesepakatan (encoding):

    Byte yang sama, misalnya 01000001, bisa dibaca sebagai angka 65 atau huruf "A", tergantung program memperlakukannya sebagai apa. Inilah alasan file .jpg yang dibuka di Notepad terlihat seperti karakter acak: datanya dibaca dengan "kacamata" yang salah.

    Membaca bilangan biner

    Biner memakai nilai tempat seperti desimal, tapi kelipatannya 2, bukan 10. Dari kanan ke kiri, nilai tempatnya 1, 2, 4, 8, 16, 32, 64, 128.

    Biner:      0   1   0   0   0   0   0   1
    Nilai:    128  64  32  16   8   4   2   1
    Hasil: 64 + 1 = 65
    

    Detail konversi akan dibahas lagi di modul representasi angka.

    Contoh kode

    JavaScript bisa menunjukkan representasi biner sebuah angka dan mengukur ukuran data dalam byte.

    // Mengubah angka desimal ke string biner
    console.log((65).toString(2));        // → 1000001
    console.log((255).toString(2));       // → 11111111
    
    // Menulis angka langsung dalam biner dengan awalan 0b
    console.log(0b01000001);              // → 65
    
    // padStart menambahkan nol di depan supaya pas 8 bit (1 byte)
    console.log((5).toString(2).padStart(8, "0")); // → 00000101
    
    // Berapa kombinasi dari n bit? Pakai operator pangkat **
    for (const n of [1, 2, 4, 8, 16]) {
      console.log(`${n} bit = ${2 ** n} kombinasi`);
    }
    // → 1 bit = 2 kombinasi
    // → 2 bit = 4 kombinasi
    // → 4 bit = 16 kombinasi
    // → 8 bit = 256 kombinasi
    // → 16 bit = 65536 kombinasi
    

    Menghitung ukuran teks dalam byte dan mengonversi satuan:

    // TextEncoder mengubah teks menjadi deretan byte (UTF-8)
    const bytes = new TextEncoder().encode("Halo");
    console.log(bytes);          // → Uint8Array(4) [ 72, 97, 108, 111 ]
    console.log(bytes.length);   // → 4 (empat byte untuk empat huruf)
    
    // Kecepatan internet: Mbps ke MB per detik
    const mbps = 100;
    console.log(mbps / 8, "MB per detik"); // → 12.5 MB per detik
    
    // Kenapa SSD 512 GB terbaca sekitar 476 GiB?
    const totalByte = 512 * 1000 ** 3;
    console.log((totalByte / 1024 ** 3).toFixed(1), "GiB"); // → 476.8 GiB
    

    Kesalahan umum

    1. Menyamakan bit dan byte. 1 byte = 8 bit. Mb (megabit) bukan MB (megabyte). Selalu perhatikan huruf "b" kecil atau "B" besar.
    2. Mengira 1 KB selalu 1.024 byte. Secara standar SI, 1 KB = 1.000 byte, dan 1 KiB = 1.024 byte. Keduanya sering tercampur di kehidupan nyata, jadi cek konteksnya.
    3. Membaca biner dari kiri dengan nilai 1. Nilai tempat terkecil (1) ada di paling kanan, bukan paling kiri.
    4. Menganggap data punya makna sendiri. Byte hanyalah angka. Maknanya (huruf, warna, suara) tergantung encoding yang dipakai untuk membacanya.

    Latihan

    1. Mudah, Berapa bit dalam 3 byte? Berapa kombinasi berbeda yang bisa disimpan dalam 3 bit?
    2. Sedang, Ubah biner 00001010 dan 11001000 ke desimal secara manual, lalu cek jawabanmu dengan parseInt("...", 2) di JavaScript.
    3. Menantang, Sebuah file video berukuran 750 MB. Berapa detik minimal waktu download dengan internet 50 Mbps? Tulis perhitungannya dalam JavaScript.
    Lihat solusi

    1. 3 byte × 8 = 24 bit. 3 bit menghasilkan 2³ = 8 kombinasi (000, 001, 010, 011, 100, 101, 110, 111).

    2. 00001010 = 8 + 2 = 10. 11001000 = 128 + 64 + 8 = 200.

    console.log(parseInt("00001010", 2)); // → 10
    console.log(parseInt("11001000", 2)); // → 200
    

    3. Ubah semua ke satuan yang sama (bit).

    const ukuranMB = 750;
    const kecepatanMbps = 50;
    
    const ukuranMegabit = ukuranMB * 8;          // 6000 megabit
    const detik = ukuranMegabit / kecepatanMbps; // 120 detik
    console.log(detik, "detik");                  // → 120 detik
    console.log(detik / 60, "menit");             // → 2 menit
    

    Ini angka ideal. Kenyataannya biasanya lebih lama karena kecepatan internet jarang stabil di angka maksimal.

    Ringkasan

    Kuis pemahaman

    Pilih satu jawaban per soal. Penjelasan muncul setelah kamu menjawab.