b belajar.myudak

Sistem bilangan & representasi integer

Biner, oktal, heksadesimal, konversi antar basis, serta sign-magnitude, one's complement, dan two's complement.

dasar #sistem bilangan#biner#two's complement#organisasi komputer

Komputer menyimpan semua data sebagai bit 0 dan 1. Untuk membaca dan menulisnya dengan nyaman, kita memakai beberapa basis:

BasisDigitContohKegunaan
2 (biner)0–10b101101representasi asli di hardware
8 (oktal)0–70o55permission Unix (chmod 755)
10 (desimal)0–945manusia
16 (heksadesimal)0–9, A–F0x2Dalamat memori, warna #2F5BEA

Nilai sebuah bilangan basis bb dengan digit dn−1…d1d0d_{n-1} \dots d_1 d_0 adalah ∑idi⋅bi\sum_{i} d_i \cdot b^i. Contohnya 1011012=32+8+4+1=45101101_2 = 32 + 8 + 4 + 1 = 45.

Konversi basis bilangan
Representasi 8-bit (two's complement)

Unsigned: 45 (0…255) · Signed: 45 (-128…127)

Klik bit untuk membaliknya. Bit paling kiri punya bobot negatif, itulah inti two's complement: −x = (~x) + 1.

Cara manual: desimal → biner (bagi 2 berulang)
  1. 45 ÷ 2 = 22 sisa 1
  2. 22 ÷ 2 = 11 sisa 0
  3. 11 ÷ 2 = 5 sisa 1
  4. 5 ÷ 2 = 2 sisa 1
  5. 2 ÷ 2 = 1 sisa 0
  6. 1 ÷ 2 = 0 sisa 1

Baca sisa dari bawah ke atas: 101101

Trik konversi cepat

  • Biner ↔ heksa: kelompokkan 4 bit dari kanan. 0010 1101 → 2 D.
  • Biner ↔ oktal: kelompokkan 3 bit dari kanan. 101 101 → 5 5.
  • Desimal → biner: bagi 2 berulang, baca sisanya dari bawah ke atas (buka bagian “Cara manual” di widget).

Bilangan negatif

Dengan nn bit ada tiga cara klasik menyimpan bilangan bertanda:

Representasi−5 dalam 8 bitRentang 8 bitCatatan
Sign-magnitude1000 0101−127 … 127ada +0 dan −0
One’s complement1111 1010−127 … 127balik semua bit; juga ada dua nol
Two’s complement1111 1011−128 … 127balik semua bit lalu +1; satu nol

Hampir semua CPU modern memakai two’s complement, karena penjumlahan dan pengurangan bisa memakai rangkaian adder yang sama persis dengan bilangan tak bertanda. Cara melihatnya: bit paling kiri berbobot −2n−1-2^{n-1}, bit lainnya berbobot positif seperti biasa. 1111 1011 = −128+64+32+16+8+2+1=−5-128 + 64 + 32 + 16 + 8 + 2 + 1 = -5.

Sign extension

Untuk memperlebar bilangan two’s complement (misalnya 8 bit menjadi 16 bit), salin bit tanda ke bit-bit baru. 1111 1011 (−5) menjadi 1111 1111 1111 1011, tetap −5. Coba di widget: atur −5, lalu ganti antara 8 dan 16 bit.

Cek pemahaman
  1. 1. 0x3F dalam desimal?

  2. 2. Rentang integer two’s complement 4 bit?

  3. 3. Two’s complement 8 bit dari −1?