<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.haidhi.my.id/wiki/index.php?action=history&amp;feed=atom&amp;title=Unsigned_Encodings</id>
	<title>Unsigned Encodings - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.haidhi.my.id/wiki/index.php?action=history&amp;feed=atom&amp;title=Unsigned_Encodings"/>
	<link rel="alternate" type="text/html" href="https://wiki.haidhi.my.id/wiki/index.php?title=Unsigned_Encodings&amp;action=history"/>
	<updated>2026-11-01T19:55:00Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.haidhi.my.id/wiki/index.php?title=Unsigned_Encodings&amp;diff=858&amp;oldid=prev</id>
		<title>SanzSkuy: Created page with &quot;Section ini menjawab satu pertanyaan: &#039;&#039;&#039;kalau kita punya deretan angka 0 dan 1, bagaimana cara membacanya sebagai satu bilangan biasa?&#039;&#039;&#039;  Plus satu jaminan tambahan: &#039;&#039;&#039;pembacaan itu unik dan bisa dibalik&#039;&#039;&#039;.  Itu saja isinya. Sisanya cuma cara menuliskannya secara rapi.  = Bagian 1: Membangun idenya dari nol =  == Langkah 0: Ingat dulu cara kerja angka desimal ==  Sebelum masuk biner, kita ulang dulu sesuatu yang sudah kita pakai sejak kecil tanpa sadar.  Ambil angka...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.haidhi.my.id/wiki/index.php?title=Unsigned_Encodings&amp;diff=858&amp;oldid=prev"/>
		<updated>2026-09-08T02:57:00Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;Section ini menjawab satu pertanyaan: &amp;#039;&amp;#039;&amp;#039;kalau kita punya deretan angka 0 dan 1, bagaimana cara membacanya sebagai satu bilangan biasa?&amp;#039;&amp;#039;&amp;#039;  Plus satu jaminan tambahan: &amp;#039;&amp;#039;&amp;#039;pembacaan itu unik dan bisa dibalik&amp;#039;&amp;#039;&amp;#039;.  Itu saja isinya. Sisanya cuma cara menuliskannya secara rapi.  = Bagian 1: Membangun idenya dari nol =  == Langkah 0: Ingat dulu cara kerja angka desimal ==  Sebelum masuk biner, kita ulang dulu sesuatu yang sudah kita pakai sejak kecil tanpa sadar.  Ambil angka...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Section ini menjawab satu pertanyaan: &amp;#039;&amp;#039;&amp;#039;kalau kita punya deretan angka 0 dan 1, bagaimana cara membacanya sebagai satu bilangan biasa?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Plus satu jaminan tambahan: &amp;#039;&amp;#039;&amp;#039;pembacaan itu unik dan bisa dibalik&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Itu saja isinya. Sisanya cuma cara menuliskannya secara rapi.&lt;br /&gt;
&lt;br /&gt;
= Bagian 1: Membangun idenya dari nol =&lt;br /&gt;
&lt;br /&gt;
== Langkah 0: Ingat dulu cara kerja angka desimal ==&lt;br /&gt;
&lt;br /&gt;
Sebelum masuk biner, kita ulang dulu sesuatu yang sudah kita pakai sejak kecil tanpa sadar.&lt;br /&gt;
&lt;br /&gt;
Ambil angka &amp;#039;&amp;#039;&amp;#039;507&amp;#039;&amp;#039;&amp;#039;. Kenapa dia bernilai lima ratus tujuh?&lt;br /&gt;
&lt;br /&gt;
Karena tiap posisi digit punya &amp;#039;&amp;#039;&amp;#039;nilai tempat&amp;#039;&amp;#039;&amp;#039; sendiri:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    5     0     7&lt;br /&gt;
    |     |     |&lt;br /&gt;
   100   10     1     &amp;lt;- nilai tempat tiap posisi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lalu kita kalikan dan jumlahkan:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  5 x 100  =  500&lt;br /&gt;
  0 x  10  =    0&lt;br /&gt;
  7 x   1  =    7&lt;br /&gt;
             -----&lt;br /&gt;
               507&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Perhatikan pola nilai tempatnya: 1, 10, 100, 1000 — &amp;#039;&amp;#039;&amp;#039;naik sepuluh kali lipat&amp;#039;&amp;#039;&amp;#039; tiap geser satu posisi ke kiri. Karena itu namanya sistem &amp;#039;&amp;#039;&amp;#039;basis 10&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
{{Catatan|Inti yang perlu dibawa ke langkah berikutnya: angka itu bukan sekadar deretan simbol. Tiap posisi punya bobot, dan nilai totalnya adalah jumlah dari digit dikali bobotnya.}}&lt;br /&gt;
&lt;br /&gt;
== Langkah 1: Biner memakai ide yang sama persis ==&lt;br /&gt;
&lt;br /&gt;
Biner bekerja dengan cara yang sama. Yang berubah cuma dua hal:&lt;br /&gt;
&lt;br /&gt;
# Digitnya cuma boleh &amp;#039;&amp;#039;&amp;#039;0 atau 1&amp;#039;&amp;#039;&amp;#039; (bukan 0 sampai 9)&lt;br /&gt;
# Nilai tempatnya &amp;#039;&amp;#039;&amp;#039;naik dua kali lipat&amp;#039;&amp;#039;&amp;#039;, bukan sepuluh kali lipat&lt;br /&gt;
&lt;br /&gt;
Jadi nilai tempatnya jadi seperti ini:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   ... 8     4     2     1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Atau kalau ditulis sebagai pangkat dua:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   ... 2^3   2^2   2^1   2^0&lt;br /&gt;
   ...  8     4     2     1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Tip|Kalau lupa, tinggal mulai dari 1 di paling kanan lalu kalikan dua terus ke kiri: 1, 2, 4, 8, 16, 32, 64, 128, ...}}&lt;br /&gt;
&lt;br /&gt;
== Langkah 2: Cara menomori posisi bit ==&lt;br /&gt;
&lt;br /&gt;
Ini bagian yang bikin orang tersesat kalau kelewat, jadi pelan-pelan.&lt;br /&gt;
&lt;br /&gt;
Buku menomori bit &amp;#039;&amp;#039;&amp;#039;dari kanan, dimulai dari nol&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  posisi:    3     2     1     0&lt;br /&gt;
             |     |     |     |&lt;br /&gt;
  bit:     [ 1     0     1     1 ]&lt;br /&gt;
             |                 |&lt;br /&gt;
             |                 +--- ini x_0, bit paling kanan&lt;br /&gt;
             +--------------------- ini x_3, bit paling kiri&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jadi untuk vektor bit selebar &amp;#039;&amp;#039;&amp;#039;w&amp;#039;&amp;#039;&amp;#039; bit, penulisannya:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  [ x_(w-1),  x_(w-2),  ... ,  x_1,  x_0 ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Buku juga memakai lambang &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; bertanda panah di atasnya untuk menyebut &amp;#039;&amp;#039;&amp;#039;seluruh vektor sekaligus&amp;#039;&amp;#039;&amp;#039;, sementara &amp;lt;code&amp;gt;x_i&amp;lt;/code&amp;gt; menyebut &amp;#039;&amp;#039;&amp;#039;satu bit tertentu&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
{{Warning|title=Jangan sampai kebalik|Nomor posisi dihitung &amp;#039;&amp;#039;&amp;#039;dari kanan&amp;#039;&amp;#039;&amp;#039; dan &amp;#039;&amp;#039;&amp;#039;dimulai dari 0&amp;#039;&amp;#039;&amp;#039;, bukan dari kiri dan bukan dimulai dari 1. Kalau ini kebalik, semua rumus di sisa bab akan menghasilkan angka yang salah. Alasan penomorannya begitu: supaya nomor posisi langsung sama dengan pangkat duanya — posisi 3 bernilai 2 pangkat 3.}}&lt;br /&gt;
&lt;br /&gt;
== Langkah 3: Aturannya cuma satu kalimat ==&lt;br /&gt;
&lt;br /&gt;
Sekarang aturan intinya:&lt;br /&gt;
&lt;br /&gt;
; &amp;#039;&amp;#039;&amp;#039;Kalau sebuah bit bernilai 1, dia menyumbang nilai tempatnya. Kalau bernilai 0, dia tidak menyumbang apa-apa.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Bayangkan tiap posisi bit sebagai &amp;#039;&amp;#039;&amp;#039;saklar lampu&amp;#039;&amp;#039;&amp;#039; yang punya harga tetap:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  saklar 8   saklar 4   saklar 2   saklar 1&lt;br /&gt;
     [ ]        [ ]        [ ]        [ ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Menyalakan saklar berarti membayar harganya. Nilai akhirnya adalah &amp;#039;&amp;#039;&amp;#039;total harga saklar yang menyala&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
= Bagian 2: Rumus resminya =&lt;br /&gt;
&lt;br /&gt;
== Langkah 4: Membongkar rumus 2.1 ==&lt;br /&gt;
&lt;br /&gt;
Buku menuliskan aturan tadi seperti ini:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                w-1&lt;br /&gt;
   B2U (x)  =   SUM   x  . 2^i&lt;br /&gt;
      w         i=0    i&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kelihatan menakutkan, padahal isinya persis kalimat di Langkah 3. Kita bongkar potongan demi potongan:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Potongan !! Artinya dalam bahasa sehari-hari&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;B2U&amp;lt;/code&amp;gt; || Singkatan dari &amp;#039;&amp;#039;binary to unsigned&amp;#039;&amp;#039; — &amp;quot;dari biner ke tak bertanda&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;w&amp;lt;/code&amp;gt; di bawah || Lebarnya berapa bit&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SUM&amp;lt;/code&amp;gt; (lambang sigma) || &amp;quot;Jumlahkan semuanya&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;i=0&amp;lt;/code&amp;gt; sampai &amp;lt;code&amp;gt;w-1&amp;lt;/code&amp;gt; || &amp;quot;Untuk tiap posisi, mulai dari posisi 0 sampai posisi terakhir&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x_i&amp;lt;/code&amp;gt; || Nilai bit di posisi itu, 0 atau 1&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;2^i&amp;lt;/code&amp;gt; || Nilai tempat posisi itu&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;x_i . 2^i&amp;lt;/code&amp;gt; || Bit dikali nilai tempatnya — inilah &amp;quot;sumbangan&amp;quot; posisi itu&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Dibaca utuh: &amp;#039;&amp;#039;&amp;#039;untuk tiap posisi bit, kalikan nilai bitnya dengan nilai tempatnya, lalu jumlahkan semuanya.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{Catatan|title=Soal lambang titik-sama-dengan|Buku memakai lambang &amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt; dengan titik di atasnya. Artinya &amp;quot;ruas kiri &amp;#039;&amp;#039;&amp;#039;didefinisikan&amp;#039;&amp;#039;&amp;#039; sama dengan ruas kanan&amp;quot;. Jadi ini bukan hasil hitungan yang diturunkan dari mana-mana, melainkan kesepakatan tentang apa arti B2U. Mirip seperti mengatakan &amp;quot;yang kami maksud dengan ini adalah itu&amp;quot;.}}&lt;br /&gt;
&lt;br /&gt;
== Langkah 5: Empat contoh, dikerjakan pelan-pelan ==&lt;br /&gt;
&lt;br /&gt;
Semua contoh di bawah memakai &amp;#039;&amp;#039;&amp;#039;w = 4&amp;#039;&amp;#039;&amp;#039;, jadi nilai tempatnya: 8, 4, 2, 1.&lt;br /&gt;
&lt;br /&gt;
=== Contoh 1: [0001] ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  posisi:     3     2     1     0&lt;br /&gt;
  bit:        0     0     0     1&lt;br /&gt;
  nilai tempat: 8     4     2     1&lt;br /&gt;
  sumbangan:  0     0     0     1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hitung: 0 + 0 + 0 + 1 = &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Contoh 2: [0101] ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  posisi:     3     2     1     0&lt;br /&gt;
  bit:        0     1     0     1&lt;br /&gt;
  nilai tempat: 8     4     2     1&lt;br /&gt;
  sumbangan:  0     4     0     1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hitung: 0 + 4 + 0 + 1 = &amp;#039;&amp;#039;&amp;#039;5&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Contoh 3: [1011] ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  posisi:     3     2     1     0&lt;br /&gt;
  bit:        1     0     1     1&lt;br /&gt;
  nilai tempat: 8     4     2     1&lt;br /&gt;
  sumbangan:  8     0     2     1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hitung: 8 + 0 + 2 + 1 = &amp;#039;&amp;#039;&amp;#039;11&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Contoh 4: [1111] ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  posisi:     3     2     1     0&lt;br /&gt;
  bit:        1     1     1     1&lt;br /&gt;
  nilai tempat: 8     4     2     1&lt;br /&gt;
  sumbangan:  8     4     2     1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hitung: 8 + 4 + 2 + 1 = &amp;#039;&amp;#039;&amp;#039;15&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
=== Ringkasan keempatnya ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Vektor bit !! Perhitungan !! Hasil&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[0001]&amp;lt;/code&amp;gt; || 0 + 0 + 0 + 1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[0101]&amp;lt;/code&amp;gt; || 0 + 4 + 0 + 1 || 5&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[1011]&amp;lt;/code&amp;gt; || 8 + 0 + 2 + 1 || 11&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[1111]&amp;lt;/code&amp;gt; || 8 + 4 + 2 + 1 || 15&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Langkah 6: Cara membaca Figure 2.12 ==&lt;br /&gt;
&lt;br /&gt;
Gambar di buku itu sebenarnya cuma cara lain menyajikan tabel di atas.&lt;br /&gt;
&lt;br /&gt;
Tiap posisi bit digambar sebagai &amp;#039;&amp;#039;&amp;#039;batang biru&amp;#039;&amp;#039;&amp;#039; yang panjangnya sesuai nilai tempatnya:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  2^3 = 8   |========================|&lt;br /&gt;
  2^2 = 4   |============|&lt;br /&gt;
  2^1 = 2   |======|&lt;br /&gt;
  2^0 = 1   |===|&lt;br /&gt;
&lt;br /&gt;
            0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lalu tiap vektor bit digambar dengan &amp;#039;&amp;#039;&amp;#039;menyambung batang-batang yang bitnya bernilai 1&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  [0001]    |===|                                        -&amp;gt; 1&lt;br /&gt;
  [0101]    |============|===|                           -&amp;gt; 5&lt;br /&gt;
  [1011]    |========================|======|===|        -&amp;gt; 11&lt;br /&gt;
  [1111]    |========================|============|======|===|  -&amp;gt; 15&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jadi nilai sebuah vektor bit sama dengan &amp;#039;&amp;#039;&amp;#039;total panjang batang yang tersambung&amp;#039;&amp;#039;&amp;#039;. Gambar itu adalah cara menunjukkan penjumlahan tanpa menulis penjumlahan.&lt;br /&gt;
&lt;br /&gt;
= Bagian 3: Rentang nilainya =&lt;br /&gt;
&lt;br /&gt;
== Langkah 7: Yang terkecil dan yang terbesar ==&lt;br /&gt;
&lt;br /&gt;
=== Nilai terkecil ===&lt;br /&gt;
&lt;br /&gt;
Semua saklar mati:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  [0000]  -&amp;gt;  0 + 0 + 0 + 0  =  0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jadi nilai terkecil selalu &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039;. Tidak ada cara membuatnya lebih kecil, karena tidak ada bit yang bisa menyumbang nilai negatif.&lt;br /&gt;
&lt;br /&gt;
=== Nilai terbesar ===&lt;br /&gt;
&lt;br /&gt;
Semua saklar menyala:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  [1111]  -&amp;gt;  8 + 4 + 2 + 1  =  15&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Buku memberi nama untuk nilai terbesar ini: &amp;#039;&amp;#039;&amp;#039;UMax_w&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Untuk w = 4:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  UMax_4  =  2^4 - 1  =  16 - 1  =  15&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rumus umumnya:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  UMax_w  =  2^w - 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kenapa dikurangi satu ===&lt;br /&gt;
&lt;br /&gt;
Ini pertanyaan yang wajar dan jawabannya sederhana.&lt;br /&gt;
&lt;br /&gt;
Dengan w bit, ada &amp;#039;&amp;#039;&amp;#039;2^w pola bit&amp;#039;&amp;#039;&amp;#039; yang mungkin. Untuk w = 4 berarti ada 16 pola: dari &amp;lt;code&amp;gt;[0000]&amp;lt;/code&amp;gt; sampai &amp;lt;code&amp;gt;[1111]&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Tapi kita mulai menghitung dari &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039;, bukan dari 1. Jadi:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  pola ke-1  -&amp;gt;  0&lt;br /&gt;
  pola ke-2  -&amp;gt;  1&lt;br /&gt;
  pola ke-3  -&amp;gt;  2&lt;br /&gt;
   ...&lt;br /&gt;
  pola ke-16 -&amp;gt;  15&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enam belas pola, tapi angka terbesarnya 15. Karena satu jatah terpakai untuk angka nol.&lt;br /&gt;
&lt;br /&gt;
{{Tip|Analogi: kalau ada 16 kursi bernomor dan penomoran dimulai dari 0, kursi terakhir bernomor 15, bukan 16. Jumlah kursi dan nomor kursi terakhir memang selalu beda satu.}}&lt;br /&gt;
&lt;br /&gt;
=== Tabel untuk lebar yang umum dipakai ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! w !! Banyak pola (2^w) !! UMax_w !! Tipe C yang biasa&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 16 || 15 || (nibble)&lt;br /&gt;
|-&lt;br /&gt;
| 8 || 256 || 255 || &amp;lt;code&amp;gt;unsigned char&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;uint8_t&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 65.536 || 65.535 || &amp;lt;code&amp;gt;uint16_t&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 32 || 4.294.967.296 || 4.294.967.295 || &amp;lt;code&amp;gt;unsigned int&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 64 || sekitar 1,8 x 10^19 || 2^64 - 1 || &amp;lt;code&amp;gt;uint64_t&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Cara menuliskannya secara formal ===&lt;br /&gt;
&lt;br /&gt;
Dengan kedua batas itu, fungsi B2U bisa dinyatakan sebagai pemetaan:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  B2U :  {0,1}^w  -&amp;gt;  {0, 1, 2, ... , UMax_w}&lt;br /&gt;
     w&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dibaca: &amp;quot;B2U mengambil masukan berupa deretan w buah angka 0-atau-1, dan menghasilkan keluaran berupa satu bilangan antara 0 sampai UMax_w.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Bagian 4: Arah sebaliknya dan sifat bijection =&lt;br /&gt;
&lt;br /&gt;
== Langkah 8: Dari angka kembali ke bit ==&lt;br /&gt;
&lt;br /&gt;
Kita sudah bisa jalan dari bit ke angka. Sekarang arah baliknya.&lt;br /&gt;
&lt;br /&gt;
Fungsi kebalikan ini dinamai &amp;#039;&amp;#039;&amp;#039;U2B_w&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;unsigned to binary&amp;#039;&amp;#039;).&lt;br /&gt;
&lt;br /&gt;
=== Cara mengerjakannya: metode kurangi dari yang terbesar ===&lt;br /&gt;
&lt;br /&gt;
Misal kita mau menulis &amp;#039;&amp;#039;&amp;#039;11&amp;#039;&amp;#039;&amp;#039; dalam 4 bit.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Langkah A.&amp;#039;&amp;#039;&amp;#039; Tulis nilai tempatnya: 8, 4, 2, 1&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Langkah B.&amp;#039;&amp;#039;&amp;#039; Mulai dari yang terbesar. Tanya: &amp;quot;apakah 8 muat di dalam 11?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  8 muat di 11?  Ya.   -&amp;gt; bit posisi 3 = 1&lt;br /&gt;
  Sisa: 11 - 8 = 3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Langkah C.&amp;#039;&amp;#039;&amp;#039; Lanjut ke 4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  4 muat di 3?   Tidak. -&amp;gt; bit posisi 2 = 0&lt;br /&gt;
  Sisa tetap: 3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Langkah D.&amp;#039;&amp;#039;&amp;#039; Lanjut ke 2.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  2 muat di 3?   Ya.   -&amp;gt; bit posisi 1 = 1&lt;br /&gt;
  Sisa: 3 - 2 = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Langkah E.&amp;#039;&amp;#039;&amp;#039; Lanjut ke 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  1 muat di 1?   Ya.   -&amp;gt; bit posisi 0 = 1&lt;br /&gt;
  Sisa: 1 - 1 = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Hasil:&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;[1011]&amp;lt;/code&amp;gt;. Sisanya nol, berarti pas.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Cek balik:&amp;#039;&amp;#039;&amp;#039; 8 + 0 + 2 + 1 = 11 ✓&lt;br /&gt;
&lt;br /&gt;
== Langkah 9: Sifat bijection ==&lt;br /&gt;
&lt;br /&gt;
Sekarang bagian yang paling penting di section ini — dan yang paling gampang dilewat karena kelihatannya cuma teori.&lt;br /&gt;
&lt;br /&gt;
Buku menyatakan sebuah prinsip: &amp;#039;&amp;#039;&amp;#039;fungsi B2U_w adalah bijection&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
=== Apa itu bijection ===&lt;br /&gt;
&lt;br /&gt;
Istilah matematika untuk fungsi yang &amp;#039;&amp;#039;&amp;#039;jalan dua arah dengan rapi&amp;#039;&amp;#039;&amp;#039;. Definisi dari buku: fungsi f yang memetakan nilai x ke nilai y, dan bisa juga bekerja terbalik, karena untuk setiap y ada tepat satu x yang menghasilkannya.&lt;br /&gt;
&lt;br /&gt;
Dalam konteks kita, artinya dua jaminan sekaligus:&lt;br /&gt;
&lt;br /&gt;
; Jaminan 1: Tidak ada angka yang punya dua penulisan&lt;br /&gt;
: Angka 11 dalam 4 bit hanya bisa ditulis satu cara: &amp;lt;code&amp;gt;[1011]&amp;lt;/code&amp;gt;. Tidak ada pola bit lain yang juga berarti 11.&lt;br /&gt;
&lt;br /&gt;
; Jaminan 2: Tidak ada pola bit yang tidak berarti apa-apa&lt;br /&gt;
: Semua 16 pola pada w = 4 adalah angka yang sah. Tidak ada pola yang terbuang, ilegal, atau tanpa makna.&lt;br /&gt;
&lt;br /&gt;
=== Analogi sederhana ===&lt;br /&gt;
&lt;br /&gt;
Bayangkan sebuah kamus dua bahasa yang sempurna:&lt;br /&gt;
&lt;br /&gt;
* tiap kata di bahasa A punya &amp;#039;&amp;#039;&amp;#039;tepat satu&amp;#039;&amp;#039;&amp;#039; terjemahan di bahasa B&lt;br /&gt;
* tiap kata di bahasa B punya &amp;#039;&amp;#039;&amp;#039;tepat satu&amp;#039;&amp;#039;&amp;#039; terjemahan balik di bahasa A&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;tidak ada&amp;#039;&amp;#039;&amp;#039; kata yang tidak kebagian pasangan&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;tidak ada&amp;#039;&amp;#039;&amp;#039; kata yang punya dua arti&lt;br /&gt;
&lt;br /&gt;
Kamus semacam itulah yang disebut bijection. Dan itulah hubungan antara pola bit dan bilangan tak-negatif.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    Pola bit                    Bilangan&lt;br /&gt;
   (16 pola)                   (0 sampai 15)&lt;br /&gt;
&lt;br /&gt;
    [0000]  &amp;lt;------------------&amp;gt;  0&lt;br /&gt;
    [0001]  &amp;lt;------------------&amp;gt;  1&lt;br /&gt;
    [0010]  &amp;lt;------------------&amp;gt;  2&lt;br /&gt;
      ...                        ...&lt;br /&gt;
    [1111]  &amp;lt;------------------&amp;gt; 15&lt;br /&gt;
&lt;br /&gt;
   Tidak ada yang menyilang, tidak ada yang menggantung.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kenapa jaminan ini perlu disebut ===&lt;br /&gt;
&lt;br /&gt;
Karena sifat ini &amp;#039;&amp;#039;&amp;#039;tidak otomatis&amp;#039;&amp;#039;&amp;#039;. Ada cara pengkodean lain yang justru gagal memenuhinya.&lt;br /&gt;
&lt;br /&gt;
Contohnya &amp;#039;&amp;#039;&amp;#039;sign-magnitude&amp;#039;&amp;#039;&amp;#039;, yaitu skema di mana bit paling kiri dipakai sebagai tanda. Di skema itu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  [0000]  -&amp;gt;  +0&lt;br /&gt;
  [1000]  -&amp;gt;  -0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dua pola bit yang berbeda, tapi artinya sama-sama nol. Jaminan 1 langsung gugur. Akibatnya membandingkan dua angka jadi rumit, karena harus ada penanganan khusus untuk kasus nol ganda.&lt;br /&gt;
&lt;br /&gt;
{{Note|title=Ini foreshadowing|Buku sengaja menegaskan sifat bijection di sini, karena pertanyaan yang sama akan diajukan lagi untuk &amp;#039;&amp;#039;&amp;#039;two&amp;#039;s-complement&amp;#039;&amp;#039;&amp;#039; di §2.2.3. Polanya: setiap kali sebuah encoding baru diperkenalkan, pertanyaan pertamanya selalu &amp;quot;apakah ini bijection?&amp;quot; Kalau ya, encoding itu bersih dan bisa dipakai. Kalau tidak, akan ada kasus khusus yang merepotkan selamanya.}}&lt;br /&gt;
&lt;br /&gt;
= Bagian 5: Latihan mandiri =&lt;br /&gt;
&lt;br /&gt;
Kerjakan dulu tanpa melihat jawaban. Semua memakai w = 4.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  1.  [0110]  = ?&lt;br /&gt;
  2.  [1100]  = ?&lt;br /&gt;
  3.  [1010]  = ?&lt;br /&gt;
  4.  [0111]  = ?&lt;br /&gt;
  5.  Tulis 13 dalam 4 bit&lt;br /&gt;
  6.  Tulis  9 dalam 4 bit&lt;br /&gt;
  7.  Berapa UMax untuk w = 6?&lt;br /&gt;
  8.  Ada berapa pola bit yang mungkin untuk w = 6?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Jawaban ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  1.  [0110]  =  0 + 4 + 2 + 0  =  6&lt;br /&gt;
  2.  [1100]  =  8 + 4 + 0 + 0  = 12&lt;br /&gt;
  3.  [1010]  =  8 + 0 + 2 + 0  = 10&lt;br /&gt;
  4.  [0111]  =  0 + 4 + 2 + 1  =  7&lt;br /&gt;
  5.  13 = 8 + 4 + 1        -&amp;gt;  [1101]&lt;br /&gt;
  6.   9 = 8 + 1            -&amp;gt;  [1001]&lt;br /&gt;
  7.  UMax_6 = 2^6 - 1 = 63&lt;br /&gt;
  8.  2^6 = 64 pola&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Catatan untuk kerja systems =&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Sifat &amp;quot;tidak ada pola ilegal&amp;quot; adalah alasan overflow unsigned di C terdefinisi.&amp;#039;&amp;#039;&amp;#039; Karena setiap hasil setelah dipotong ke w bit pasti jatuh ke pola bit yang sah, standar C bisa menyatakan dengan tegas bahwa hasilnya membungkus (&amp;#039;&amp;#039;wrap&amp;#039;&amp;#039;) secara modulo 2^w. Bandingkan dengan integer bertanda, yang overflow-nya justru dinyatakan sebagai &amp;#039;&amp;#039;undefined behavior&amp;#039;&amp;#039;.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;UMax muncul terus di kode nyata.&amp;#039;&amp;#039;&amp;#039; Nilai 255, 65535, dan 4294967295 bukan angka acak — semuanya UMax untuk lebar 8, 16, dan 32 bit. Begitu melihat angka-angka itu di log atau di debugger, biasanya ada operasi unsigned yang membungkus.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Pengurangan unsigned adalah sumber bug klasik.&amp;#039;&amp;#039;&amp;#039; Karena tidak ada nilai negatif dalam encoding ini, ekspresi seperti &amp;lt;code&amp;gt;0u - 1u&amp;lt;/code&amp;gt; tidak menghasilkan minus satu melainkan UMax. Bug perbandingan seperti &amp;lt;code&amp;gt;for (unsigned i = n-1; i &amp;gt;= 0; i--)&amp;lt;/code&amp;gt; tidak pernah berhenti, karena kondisi &amp;lt;code&amp;gt;i &amp;gt;= 0&amp;lt;/code&amp;gt; selalu benar untuk tipe unsigned.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relevansi ke quantization.&amp;#039;&amp;#039;&amp;#039; Rentang uint8 adalah 0 sampai UMax_8 = 255, tepat 256 level. Sifat bijection itulah yang membuat pemetaan bolak-balik antara nilai real dan level kuantisasi bersih: setiap level punya satu pola bit, dan setiap pola bit adalah level yang sah. Tidak ada pola terbuang yang perlu ditangani khusus.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Lebar bit adalah parameter, bukan konstanta.&amp;#039;&amp;#039;&amp;#039; Semua rumus di section ini memakai w. Kebiasaan berpikir dalam w, bukan dalam angka 32 atau 64, sangat membantu saat berpindah antara uint8, fp16, dan format kustom di pekerjaan akselerator.&lt;br /&gt;
&lt;br /&gt;
= Istilah kunci =&lt;br /&gt;
&lt;br /&gt;
; Bit vector&lt;br /&gt;
: Deretan bit; ditulis &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; bertanda panah untuk keseluruhan, atau &amp;lt;code&amp;gt;x_i&amp;lt;/code&amp;gt; untuk bit di posisi ke-i.&lt;br /&gt;
; w&lt;br /&gt;
: Lebar, yaitu banyaknya bit dalam vektor.&lt;br /&gt;
; Nilai tempat&lt;br /&gt;
: Bobot sebuah posisi bit, yaitu 2 pangkat nomor posisinya.&lt;br /&gt;
; B2U_w&lt;br /&gt;
: Fungsi yang memetakan vektor bit selebar w menjadi bilangan tak-negatif.&lt;br /&gt;
; U2B_w&lt;br /&gt;
: Fungsi kebalikannya, memetakan bilangan menjadi pola bit.&lt;br /&gt;
; UMax_w&lt;br /&gt;
: Nilai terbesar yang bisa direpresentasikan, yaitu 2^w - 1.&lt;br /&gt;
; Bijection&lt;br /&gt;
: Fungsi yang berpasangan satu-satu dua arah; tidak ada nilai ganda dan tidak ada yang tidak terpasangkan.&lt;/div&gt;</summary>
		<author><name>SanzSkuy</name></author>
	</entry>
</feed>