Format Angka Pemrograman

Bagaimana Bahasa Pemrograman Menangani Angka

Pahami Format Angka

Setiap bahasa pemrograman memerlukan cara untuk merepresentasikan angka. Memahami tipe integer, format floating-point, dan notasi basis bilangan membantumu menulis kode yang benar dan menghindari bug halus terkait presisi, overflow, dan representasi.

Tipe Integer

Integer Ukuran Tetap

TipeBitRentang BertandaRentang Tak Bertanda
int88-128 hingga 1270 hingga 255
int1616-32.768 hingga 32.7670 hingga 65.535
int3232-2,1M hingga 2,1M0 hingga 4,3M
int6464±9,2 kuintiliun0 hingga 18,4 kuintiliun

Contoh Bahasa

  • C/C++: int, long, int32_t, uint64_t
  • Java: byte, short, int, long
  • Rust: i8, i16, i32, i64, u8, u16, u32, u64
  • Go: int8, int16, int32, int64

Angka Floating-Point

Standar IEEE 754

  • float (32-bit): ~7 digit desimal presisi
  • double (64-bit): ~15-16 digit desimal presisi

Struktur

  • Bit tanda (1 bit)
  • Eksponen (8 atau 11 bit)
  • Mantissa/signifikan (23 atau 52 bit)

Masalah Terkenal

0.1 + 0.2 = 0.30000000000000004

Ini terjadi karena 0,1 dan 0,2 tidak bisa direpresentasikan secara tepat dalam floating-point biner.

Notasi Basis Bilangan per Bahasa

BahasaBinerOktalHex
JavaScript0b10100o120x0A
Python 30b10100o120x0A
C/C++/Java0b1010*0120x0A
C#0b10100x0A
Ruby0b10100o120x0A
Go0b10100o120x0A
Rust0b10100o120x0A

*C: Literal biner ditambahkan di C23; C++14 dan Java 7+ mendukungnya.

Angka di JavaScript

Karakteristik

  • Semua angka adalah floating-point 64-bit (IEEE 754)
  • Rentang integer aman: ±9.007.199.254.740.991 (2⁵³-1)
  • BigInt untuk integer lebih besar (ES2020+)

Literal Angka

let dec = 255;        // Desimal
let hex = 0xFF;       // Heksadesimal
let bin = 0b11111111; // Biner
let oct = 0o377;      // Oktal
let big = 9007199254740992n; // BigInt

Gotcha

  • 0.1 + 0.2 !== 0.3 (floating-point)
  • parseInt('08') === 8 (diperbaiki di JS modern)

Angka di Python

Karakteristik

  • Integer memiliki presisi sembarang (tidak ada overflow)
  • Float adalah IEEE 754 64-bit
  • Bilangan kompleks built-in

Literal Angka

dec = 255          # Desimal
hex_num = 0xFF     # Heksadesimal  
bin_num = 0b11111111  # Biner
oct_num = 0o377    # Oktal
complex_num = 3+4j # Kompleks

Konversi

bin(255)  # '0b11111111'
hex(255)  # '0xff'
oct(255)  # '0o377'
int('FF', 16)  # 255

Angka Presisi Sembarang

Kapan Dibutuhkan

  • Kriptografi (kunci besar)
  • Perhitungan keuangan (desimal tepat)
  • Komputasi ilmiah (presisi ekstrem)

Dukungan Bahasa

  • Python: int (selalu presisi sembarang)
  • JavaScript: BigInt (untuk integer)
  • Java: BigInteger, BigDecimal
  • C#: BigInteger, decimal

Contoh: JavaScript BigInt

const big = 9007199254740993n;
const result = big * 2n;  // Harus menggunakan sufiks n

Output Terformat

JavaScript

num.toString(2)   // String biner
num.toString(16)  // String hex
num.toFixed(2)    // 2 tempat desimal

Python

f"{255:b}"    # '11111111' (biner)
f"{255:x}"    # 'ff' (hex)
f"{255:08b}"  # '11111111' (dengan padding)

C/C++

printf("%d", num);   // Desimal
printf("%x", num);   // Hex (huruf kecil)
printf("%X", num);   // Hex (huruf besar)
printf("%o", num);   // Oktal

Operasi Bitwise

Tersedia di kebanyakan bahasa untuk tipe integer:

OperasiSimbolContoh
AND&5 & 3 = 1
OR|5 | 3 = 7
XOR^5 ^ 3 = 6
NOT~~5 = -6
Left shift<<5 << 1 = 10
Right shift>>5 >> 1 = 2

Kesimpulan

Bahasa pemrograman menangani angka melalui berbagai tipe: integer ukuran tetap (int32, int64), floating-point (float, double), dan tipe presisi sembarang (BigInt, BigDecimal). Memahami notasi basis (prefiks 0b, 0o, 0x) dan keterbatasan setiap tipe—terutama masalah presisi floating-point—membantu menghindari bug halus. Ketika aritmetika desimal tepat penting (keuangan, mata uang), gunakan tipe decimal khusus alih-alih floating-point.

Artikel Terkait

Format Angka Pemrograman: Panduan Bahasa | YounitConverter