Selasa, 28 April 2026

Satuan Word dan Bita dalam Pemrograman

Halo!

Pada tulisanku sebelumnya, kita sudah membahas tentang satuan bit dalam pemrograman. Kali ini, kita bahas satuan word dan bita, ya.

Sejarah

Kemampuan tiap sistem/prosesor sangat beragam pada mulanya. Ada yang bisa mengolah hingga 36 bit sekaligus, tetapi juga ada yang hanya bisa mengolah 6 bit dalam sekali jalan. Sebagai contoh, IBM 704 mampu mengolah 36 bit sekaligus, tetapi hanya untuk bilangan. Untuk karakter alfanumerik, IBM 704 mengolah tiap karakter sebagai desimal berkode biner (BCD) berukuran 6 bit. Perbedaan ini baru dalam satu sistem yang sama. Sistem-sistem lain bisa memiliki ketentuan masing-masing sesuai kapasitas masing-masing sehingga tidak ada ukuran pasti untuk satuan word dan bita.

Pada tahun 1964, IBM meluncurkan IBM System/360 sekaligus membuat standar ukuran 1 bita sama dengan 8 bit. Selain itu, sistem ini juga menggunakan alamat memori dalam satuan bita juga alih-alih satuan bit ataupun satuan word. Karena IBM menguasai pasar komputer pada waktu itu, kebanyakan sistem akhirnya juga mengikuti standar 1 bita = 8 bit ini.

Meski satuan bita sudah terstandar, tiap sistem masih memiliki ukuran word yang berbeda-beda. Hanya saja, sejak satuan bita sudah distandardisasi, ukuran word menjadi kelipatan dari bita. Sebagai contoh, IBM System/360 yang dibahas sebelumnya itu memiliki ukuran word sebesar 4 bita (32 bit).

Tahun 1970-an menjadi tahun mikroprosesor dengan ukuran word sebesar 8 bit. Contoh mikroprosesor pada masa ini adalah Intel 8008, Intel 8080, dan Zilog Z80. Komputer/konsol permainan rumahan yang menggunakan ukuran word ini ada Commodore 64, Nintendo Entertainment System, dan Game Boy.

Akhir 1970-an dan awal 1980-an adalah masa ukuran word sebesar 16 bit. Intel meluncurkan mikroprosesor Intel 8086 pada tahun 1978. Intel 8086 menjadi salah satu pelopor ukuran word 16 bit dan menjadi asal mula keluarga/arsitektur x86 yang masih menjadi mayoritas arsitektur prosesor saat ini. IBM juga meluncurkan IBM PC pada tahun 1981 yang menggunakan Intel 8088, variasi dari Intel 8086. IBM PC yang populer pada masa itu menjadi penanda penggunaan ukuran word 16 bit untuk keperluan bisnis di lapangan.

Sebelum lanjut ke masa-masa berikutnya, aku mau cerita tentang Apollo Guidance Computer (AGC), komputer yang memandu wahana Apollo selama misi ke Bulan. AGC pertama kali diumumkan pada tahun 1966, sebelum ukuran word 8 bit menjadi populer. Namun, AGC sudah menggunakan ukuran word 16 bit. Pada praktiknya, yang digunakan hanya 15 bit karena 1 bit digunakan untuk pemeriksaan kesalahan (akibat radiasi di luar angkasa misalnya). Dengan ukuran RAM yang hanya 2.048 word (sekitar 4 kilobita) dan ukuran penyimpanan internal yang hanya 36.864 word (sekitar 72 kilobita), AGC bisa mengantarkan astronot ke Bulan dan pulang ke Bumi lagi. Sebagai perbandingan, foto jepretan kamera HP sekarang berukuran sekitar 3 megabita (sekitar 3 ribu kilobita).

Pada tahun 1986, Intel meluncurkan prosesor yang menjadi salah satu pelopor ukuran word 32 bit, yaitu Intel 80386 atau i386. Prosesor ini dikembangkan bersama dengan AMD dan IBM. Ukuran word 32 bit ini cukup lama menjadi standar komputer, bahkan hingga tahun 2010-an. Prosesor lainnya yang mungkin teman-teman masih ingat ada Intel Pentium, Intel Core i3, i5, dan i7 juga bermula dari sini. Sistem operasi yang kita kenal dahulu seperti Windows XP utamanya disusun dengan memperhatikan ukuran word ini. (Catatan untuk Windows: Meski demikian, tipe data WORD dalam API Windows berukuran 16 bit, DWORD [double word] berukuran 32 bit, dan QWORD [quad word] berukuran 64 bit.)

Pada tahun 2003, AMD meluncurkan prosesor Athlon 64 yang menjadi salah satu pelopor ukuran word 64 bit. Apple juga menyusul segera dengan Power Mac G5. Ukuran word 64 bit ini juga menjadi titik awal dukungan untuk RAM berukuran lebih dari 4 gigabita. Per tahun 2010-an, hampir semua komputer yang dirakit sudah menggunakan ukuran word ini. Sekarang, ponsel pintar pun sudah menggunakan ukuran word ini juga.

Untuk keluarga/arsitektur x86, meski sudah ada dukungan untuk ukuran word yang lebih besar, tiap prosesor yang lebih baru mendukung operasi untuk data dengan ukuran yang lebih kecil.

Ukuran Data dalam Pemrograman

Keragaman ukuran word ini bisa membuat hasil jalan program tidak sesuai rancangan awal. Sebagai contoh, sebuah program didesain untuk bisa menerima data sampai 1 kuintiliun (1018) karena ditujukan untuk prosesor yang mendukung 64 bit. Namun, program itu akan gagal jalan atau tidak memberikan hasil yang sesuai jika dijalankan pada prosesor yang hanya mendukung 32 bit.

Tiap bahasa pemrograman memiliki cara masing-masing dalam menyatakan ukuran sebuah variabel. Sebagai contoh, standar bahasa C tidak memberikan ukuran pasti untuk char, int, dan long, tetapi hanya mengatur ukuran minimalnya (≥8, ≥16, dan ≥32 bit masing-masing). Ukuran pastinya bergantung pada implementasi di tiap-tiap komputer. Pada tahun 1999, standar C99 akhirnya memberikan tipe data baru untuk menyatakan dengan pasti ukuran tiap variabel. Contohnya ada int8_t, int16_t, int32_t, dan int64_t untuk ukuran 8, 16, 32, dan 64 bit.

Bahasa Java mengatur ukuran tiap tipe data secara pasti untuk short, int, dan long dengan ukuran 16, 32, dan 64 bit. Bahasa Go bahkan tidak lagi menggunakan nama-nama seperti C dan Java, tetapi langsung menyatakan ukurannya secara tersurat. Contohnya ada int16, int32, dan int64 untuk ukuran 16, 32, dan 64 bit..

Selain bahasa-bahasa yang mengatur ukuran tiap variabel itu, ada juga bahasa yang menyeragamkan untuk semua ukuran. Bahasa JavaScript menggunakan tipe data Number untuk bilangan bulat dan bilangan pecahan serta BigInt untuk bilangan yang berukuran besar. Bahasa Python menggunakan tipe data int yang akan secara otomatis memperbanyak jumlah bit yang diperlukan sesuai bilangan yang dimuat oleh variabel tersebut.

Secara ringkas, berikut tabel yang menunjukkan contoh cara-cara bahasa pemrograman menyatakan ukuran variabel.

Bahasa 8 bit 16 bit 32 bit 64 bit
Ccharshortintlong
C (C99)int8_tint16_tint32_tint64_t
Javabyteshortintlong
Goint8int16int32int64
JavaScriptNumberBigInt
Pythonint

Penutup

Cukup sampai di sini bahasa tentang satuan word dan bita dalam pemrograman. Lebih banyak bahas sejarahnya ternyata kali ini. Semoga membantu, ya!

Senin, 30 Maret 2026

Satuan Bit dalam Pemrograman

Halo!

Kita mungkin sudah biasa dengan satuan bita (byte) dalam pemrograman. Tahukah kalian bahwa ada cara lain untuk mengatur data?

Setidaknya, ada tiga cara pandang utama dalam mengatur data dalam pemrograman, yaitu bit, word, dan bita. Kali ini, kita bahas satuan bit, ya.

Sejarah

Pada mulanya, komputer perlu diprogram bit demi bit. Pemrogram komputer akan mengatur tiap bit saat menyetel, memrogram, dan memasukkan data. Karena untaian bit sulit dibaca dan rentan keliru saat diatur, dibuatlah kartu tebuk (punch card) sebagai gantinya. Konsep kartu tebuk awalnya berasal dari mesin tenun otomatis. Mesin-mesin tenun ini dapat menyusun pola berdasarkan lubang pada kartu tebuk.

Pada masa kini pun, pengaturan data dalam satuan bit masih digunakan. Kriptografi mengolah data dalam satuan bit untuk menyandikan dan membuka sandi suatu data. Saat menggunakan perangkat keras, misalnya sensor atau aktuator, kita perlu menyalakan bit-bit tertentu untuk menerima data atau mengirim perintah.

Oleh karena itu, dalam banyak bahasa pemrograman, masih ada dukungan untuk manipulasi bit walau satuan utamanya tidak lagi dalam bit. Contohnya ada operasi OR, AND, dan XOR untuk mengatur bit-bit tertentu serta operasi NOT untuk membalik nilai bit. Ada juga operasi SHL (shift left), SHR (shift right), ROL (rotate left), dan ROR (rotate right) untuk melakukan geser atau geser melingkar. Aku pernah membahas contoh operasi geseran melingkar pada tulisanku sebelumnya tentang jaringan substitusi-permutasi.

Bit Mask (Tabir Bit)

Contoh kasusnya adalah penggunaan bit mask (tabir bit). Tiap setelan biner (ya-tidak atau nyala-mati) diwakili oleh satu bit. Untaian bit ini bisa berisi banyak setelan sekaligus.

Misalkan ada sebuah mobil mainan yang memiliki motor mandiri untuk tiap rodanya. Keadaan motor tiap roda kita kumpulkan dalam suatu untaian bit. Kita bisa mengatur motor tiap roda dengan operasi bit.

kendali = WXYZ
X--Y (depan)
|  |
|  |
W--Z (belakang)

Untuk menyalakan, kita bisa menggunakan operasi OR dengan 1 pada bit yang dimaksud dan dengan 0 pada bit-bit lainnya.

   0000 (semuanya mati)
OR 1000
   1000 (kiri belakang nyala, lainnya mati)

Untuk mematikan, kita bisa menggunakan operasi AND dengan 0 (awas, kebalikan dari operasi lain) pada bit yang dimaksud dan dengan 1 pada bit-bit lainnya.

    1000 (kiri belakang nyala, lainnya mati)
AND 0111
    0000 (semuanya mati)

Untuk membalikkan keadaan, kita bisa menggunakan operasi XOR dengan 1 pada bit yang dimaksud dan dengan 0 pada bit-bit lainnya.

    0000 (semuanya mati)
XOR 1000
    1000 (kiri belakang nyala, lainnya mati)
XOR 1000
    0000 (semuanya mati)

Untuk memeriksa keadaan, kita bisa menggunakan operasi AND dengan 1 pada bit yang dimaksud dan dengan 0 pada bit-bit lainnya, lalu melihat hasilnya (bernilai nol atau tidak).

    1111 (semua nyala)
AND 1000 (periksa kiri belakang)
    1000 (lebih dari nol: kiri belakang nyala)

Agar mudah digunakan dan dibaca, biasanya tiap bit disimpan ke dalam variabel.

KIRI_BELAKANG  = 1000
KIRI_DEPAN     = 0100
KANAN_DEPAN    = 0010
KANAN_BELAKANG = 0001

Kita juga bisa menggabungkan beberapa roda sekaligus untuk mengaturnya dalam sekali jalan.

KIRI     = KIRI_BELAKANG  OR KIRI_DEPAN
KANAN    = KANAN_BELAKANG OR KANAN_DEPAN
BELAKANG = KIRI_BELAKANG  OR KANAN_BELAKANG
DEPAN    = KIRI_DEPAN     OR KANAN_DEPAN
SEMUA    = KIRI           OR KANAN
SEMUA    = BELAKANG       OR DEPAN

Berikut contoh penggunaannya:

kendali AND NOT SEMUA         (0000, semuanya mati)
kendali OR      KIRI_BELAKANG (1000, kiri belakang nyala, lainnya mati)
kendali AND NOT KIRI_BELAKANG (0000, kiri belakang mati juga)
kendali OR      DEPAN         (0110, depan nyala, belakang mati)
kendali XOR     KIRI_DEPAN    (0010, kanan depan nyala, lainnya mati)

kendali AND KANAN_DEPAN > 0 = BENAR (kanan depan nyala)

Penutup

Sepertinya cukup sampai di sini bahasa tentang satuan bit dalam pemrograman. Untuk selanjutnya, masih ada satuan word dan satuan bita yang bisa kita bahas bersama. Semoga membantu dan sampai jumpa!

Selasa, 24 Februari 2026

Perbandingan Terbalik dan Lama Pengerjaan

Halo!

Mungkin teman-teman pernah membaca soal-soal sejenis ini:

Sebuah gedung akan selesai dibangun dalam waktu 6 bulan oleh 20 orang pekerja. Jika ternyata pembangunan gedung perlu selesai dalam waktu 4 bulan, berapa jumlah pekerja yang diperlukan?

Soal-soal sejenis ini biasanya digunakan untuk belajar materi perbandingan terbalik. Dalam perbandingan biasa, makin besar suatu nilai dalam perbandingan, makin besar pula nilai aslinya. Kebalikannya, dalam perbandingan terbalik, makin besar suatu nilai dalam perbandingan, justru makin kecil nilai aslinya.

Contoh perbandingan biasa adalah perbandingan jarak dengan lama perjalanan: jarak 60 km perlu 1 jam, maka jarak 120 km perlu 2 jam. Contoh perbandingan terbalik, ya, yang ada pada soal di atas: 6 bulan perlu 20 orang pekerja, maka 4 bulan perlu 30 orang pekerja.

Sebenarnya, rumus asalnya masih sama untuk perbandingan, yaitu x : y = A : B. Hanya saja, yang membedakannya adalah nilai x dan y yang digunakan. Pada perbandingan biasa, nilainya sesuai yang diketahui. Pada perbandingan terbalik, nilainya adalah kebalikannya (1/x). Nilai ini biasa kubayangkan sebagai "kecepatan" karena sering muncul pada soal yang membahas lama pengerjaan.

Meski cocok untuk belajar perbandingan terbalik, perhitungan ini belum tentu bisa diterapkan di dunia nyata. Terdapat bagian-bagian pekerjaan yang tidak bisa dipercepat meski ada tambahan tenaga ataupun bahan. Dalam contoh pembangunan gedung misalnya, menunggu hasil cor tidak bisa dipercepat dengan tambahan tenaga.

Dalam topik rekayasa perangkat lunak pun, konsepnya juga sama. Ada batas atas ukuran tim dalam mengerjakan suatu sistem atau komponen sistem (tergantung ukuran dan kompleksitasnya). Bila ukuran tim sudah melebihi batas itu, tidak ada peningkatan laju pengerjaan dan justru ada masalah baru, yaitu komunikasi antar-anggota tim.

Aku pernah menemukan soal di internet yang "agak lain" juga terkait perbandingan terbalik:

Sebuah orkestra menyelesaikan satu lagu dalam waktu 30 menit oleh 20 orang pemain. Jika mendapatkan 10 orang pemain tambahan, mereka akan menyelesaikan satu lagu dalam waktu berapa lama?

Ini, ceritanya, memainkan lagunya dipercepat begitukah? Ya ... namanya juga hanya contoh soal cerita. Tidak apa-apa meleset sedikit dari aslinya di dunia nyata.

Cukup sekian tulisanku kali ini. Sampai jumpa!