Selasa, 30 Juni 2026

Presisi Koordinat

Halo!

Beberapa waktu lalu, aku mengepos sebuah foto yang kutulisi koordinat pengambilan foto. Namun, koordinatnya kubatasi hanya sampai menit (tidak sampai detik atau bahkan milidetik). Karena itu, aku jadi terpikir. Seberapa presisi sebuah koordinat untuk tiap angka yang kutulis?

Sebelum membahas itu, aku ingin menyegarkan kembali ingatan kita bahwa yang kumaksud kali ini adalah presisi dan bukan akurasi. Akurasi (kejituan) adalah ukuran kedekatan hasil pengukuran terhadap nilai aslinya. Presisi (ketelitian) adalah ukuran luas/rentang hasil pengukuran. Perbedaan keduanya biasanya dianalogikan dengan sasaran panah berikut.

Tampak empat gambar sasaran panah yang telah ditembak dengan panah. Gambar kiri bawah: akurasi rendah dan presisi rendah digambarkan dengan bekas tembakan yang menyebar dan berada di tepi. Gambar kiri atas: akurasi tinggi tetapi presisi rendah digambarkan dengan bekas tembakan yang menyebar dan berada di tengah. Gambar kanan bawah: presisi tinggi tetapi akurasi rendah digambarkan dengan bekas tembakan yang merapat dan berada di tepi. Gambar kanan bawah: akurasi tinggi dan presisi tinggi digambarkan dengan bekas tembakan yang merapat dan berada di tengah.
Perbedaan akurasi dan presisi

Untuk mendapatkan presisi dari tiap angka koordinat yang ditulis, sebenarnya bisa diturunkan rumusnya dengan memisalkan Bumi sebagai bola. Hanya saja aku menggunakan Google Earth untuk mengukurnya kali ini agar lebih mudah buatku. Yang penasaran dengan penurunan rumusnya bisa baca di bawah ini.

Penurunan rumus (klik di sini untuk membuka)

Diketahui bahwa permukaan bola sama dengan permukaan selimut tabung (tanpa alas dan tanpa tutup) bila tinggi tabung sama dengan dua kali jari-jari bola berdasarkan Teorema Kotak Topi Archimedes (Archimedes' Hat-Box Theorem).

Dari situlah, kita bisa turunkan rumus luas permukaan irisan bola (tanpa alas dan tanpa tutup) sebagai berikut:

L = 2 π r h

dengan r adalah jari-jari bola dan h adalah tinggi irisan bola. Hal ini akan menjadi sama dengan luas permukaan bola secara keseluruhan bila h sama dengan 2r, yaitu 4πr2.

Untuk menghitung luas permukaan irisan bola tersebut dari rentang lintang yang diberikan (φ1 < φ2), kita bisa menggunakan fungsi sinus untuk menghitung nilai h sebagai berikut:

L = 2 π r (r sin(φ2) - r sin(φ1))

L = 2 π r2 (sin(φ2) - sin(φ1))

Karena irisan bola memiliki simetri putar, luasnya dari rentang bujur yang diberikan (λ1 < λ2) cukup diambil dari berapa putaran yang dimaksud sebagai berikut:

L = 2 π r2 (sin(φ2) - sin(φ1)) ((λ2 - λ1)/(1 putaran))

Sebagai contoh, luas permukaan irisan bola dengan rentang 0–1 °LU dan 0–1 °BT serta dengan jari-jari Bumi 6.371 km, perhitungannya sebagai berikut:

L = 2 π (6.371 km)2 (sin(1°) - sin(0°)) ((1° - 0°)/(360°))

L = 2 π (40.589.641 km2) sin(1°) (1/360)

L = (π/180) (40.589.641 km2) sin(1°)

L12.364 km2 (sama dengan hasil Google Earth)

Yang harus diperhatikan adalah luas permukaan yang kumaksud ini akan berbeda bila di dekat khatulistiwa vs. di dekat kutub. Makin dekat kutub, makin sempit pula luas permukaan irisannya. (Buat yang membaca turunan rumusnya di atas, nilai turunan fungsi sinus, yaitu fungsi kosinus, makin kecil seiring nilai sudut mendekati 90 derajat.)

Tampak bola dunia dengan hamparan kisi-kisi astronomis. Terlihat kotak-kotak kisi makin menyempit seiring mendekati kutub.
Kisi-kisi astronomis yang makin mengecil mendekati kutub
(Google Earth, SIO/NOAA/U.S. Navy/NGA/GEBCO, IBCAO, Landsat/Copernicus)

Oleh karena itu, kutunjukkan dua tempat sebagai contoh. Yang pertama ada di Tugu Khatulistiwa, Pontianak, Kalimantan Barat, yang tepat di khatulistiwa (0° LU/LS). Yang kedua ada di Universitas di Svalbard, Norwegia, yang ada dalam lingkar kutub (78,2° LU)

Berikut presisi tiap angka koordinat dalam satuan luas permukaan irisan.

Nilai Tempat Luas Wilayah Irisan
Tugu Khatulistiwa
(Pontianak, Kalbar)
Universitas di Svalbard
(Norwegia)
Derajat, Menit, Detik (0° 12' 34,5")
1 Derajat (°)12.364 km22.524 km2
1 Menit (')343 ha70,1 ha
1 Detik (")954 m2195 m2
0,1 Detik9,55 m21,95 m2
Derajat Desimal (0,12345°)
1 Derajat (°)12.364 km22.524 km2
0,1 Derajat12.364 ha2.524 ha
0,01 Derajat124 ha25,2 ha
0,001 Derajat12.364 m22.524 m2
0,0001 Derajat124 m225,2 m2
0,00001 Derajat1,24 m20,25 m2

Buat yang belum terlalu bisa membayangkan luas (seperti aku), berikut presisi tiap angka koordinat dalam satuan panjang yang dihitung dari rata-rata panjang sisi permukaan irisan (keliling dibagi empat).

Nilai Tempat Panjang Rata-Rata
Tugu Khatulistiwa
(Pontianak, Kalbar)
Universitas di Svalbard
(Norwegia)
Derajat, Menit, Detik (0° 12' 34,5")
1 Derajat (°)110,9 km67,2 km
1 Menit (')1.849 m1.120 m
1 Detik (")30,75 m18,68 m
0,1 Detik3,08 m1,87 m
Derajat Desimal (0,12345°)
1 Derajat (°)110,9 km67,2 km
0,1 Derajat11,09 km6,72 km
0,01 Derajat1.109,5 m672,3 m
0,001 Derajat111 m67,25 m
0,0001 Derajat11,1 m6,73 m
0,00001 Derajat1,11 m0,67 m

Sebagai gambaran, berikut luas irisan bila dihamparkan pada citra satelit.

Tampak enam citra dengan hamparan irisan untuk dua tempat dan tiga tingkat presisi derajat, menit, detik.
Ilustrasi irisan derajat, menit, detik (klik gambar untuk ukuran penuh)
Tampak enam citra dengan hamparan irisan untuk dua tempat dan tiga tingkat presisi derajat desimal.
Ilustrasi irisan derajat desimal (klik gambar untuk ukuran penuh)

Jadi, koordinat yang kutulis pada foto dalam posku itu memiliki presisi 1,84 km atau 340 ha. Lumayan luas juga ternyata. Hanya saja, aku juga menulis kabupaten tempat pengambilan foto dan ternyata letaknya jadi dua kali lipat lebih presisi. Letaknya di perbatasan soalnya.

Sudah ada bayangan mau memangkas koordinat sampai mana? Semoga bermanfaat, ya!

Sabtu, 30 Mei 2026

Jenis-Jenis Bilangan

Halo! Kali ini, singkat saja pembahasannya.

Setelah pembahasan sebelumnya, aku jadi terpikir untuk kembali ke materi Matematika sewaktu SMA dahulu tentang jenis-jenis bilangan.

Kita mengenal banyak bilangan dalam kehidupan sehari-hari: 1; 2; 3; 4/5; 6,78; 9.000; dan sebagainya. Dari berbagai macam bilangan itu, kita bisa mengelompokkannya ke dalam beberapa jenis bilangan.

Bilangan asli (ℕ) adalah bilangan yang pertama kali dipelajari atau digunakan dalam menghitung jumlah benda. Bilangan asli terdiri dari 1, 2, 3, dan seterusnya. Kemudian, ada bilangan cacah (𝕎) yang menyertakan bilangan nol (0) juga (0, 1, 2, dan seterusnya).

Bila kita menambahkan lawan dari bilangan asli (-1, -2, -3, dan seterusnya) ke bilangan cacah, kita akan mendapatkan bilangan bulat (ℤ). Bilangan bulat terdiri dari 0, 1, -1, 2, -2, dan seterusnya.

Bilangan rasional (ℚ) adalah bilangan yang bisa dinyatakan sebagai rasio dua bilangan bulat (a/b dengan a dan b adalah bilangan bulat). Contoh bilangan rasional adalah 0/1, 1/1, 1/2, 2/1, dan 2/3.

Kebalikannya, bilangan irasional adalah bilangan yang tidak bisa dinyatakan sebagai rasio dua bilangan bulat. Contoh bilangan irasional adalah π (3,14159...) dan √2 (1,41421...).

Gabungan dari bilangan rasional dan bilangan irasional menghasilkan bilangan real/riil (ℝ). Kebanyakan operasi bilangan yang kita pakai dalam sehari-hari, misalnya penjumlahan (+), pengurangan (-), perkalian (×), pembagian (÷), dan pangkat (ab), bersifat tertutup dalam bilangan real. Maksudnya, operasi-operasi tersebut akan menghasilkan bilangan real juga bila digunakan untuk bilangan real. Namun, tidak dengan operasi akar.

Operasi akar tidak tertutup dalam bilangan real. Ada sebagian bilangan real yang, bila dikenai operasi akar, menghasilkan nilai yang tidak bisa dinyatakan oleh bilangan real, yaitu akar dari bilangan real negatif (di bawah nol). Namun, bila kita misalkan √-1 sebagai 𝑖, kita akan mendapatkan jenis bilangan baru, yaitu bilangan imajiner. Bilangan imajiner bisa dikali dengan bilangan real untuk mendapatkan nilai-nilai lainnya, misalnya 2𝑖 dan 3𝑖.

Bila kita menjumlahkan bilangan real dengan bilangan imajiner, kita akan mendapatkan jenis bilangan baru yang disebut sebagai bilangan kompleks (ℂ). Contohnya adalah 2+3𝑖 dan 4-5𝑖. Operasi akar bersifat tertutup dalam bilangan kompleks.

Jenis Contoh
Asli (ℕ)1, 2, 3, ...
Cacah (𝕎)0, 1, 2, 3, ...
Bulat (ℤ)..., -2, -1, 0, 1, 2, ...
Rasional (ℚ)0/1, 1/1, 1/2, 2/1, 2/3, ...
Irasionalπ, √2
Real(semua di atas)
Kompleks(real ditambah imajiner)

Cukup sekian, ya, pembahasan tentang jenis-jenis bilangan. Semoga membantu!

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!