Sistem angka perduaan

**Sistem angka perduaan**, **sistem binari** atau **sistem angka asas dua** (Inggeris: Binary numeral system), mewakili nilai angka menggunakan dua abjad, 0 dan 1. Lebih khusus lagi, sistem asas-2 biasa merupakan 	tatatanda kedudukan dengan radiks 2. Disebabkan perlaksanaan langsung dalam litar elektronik digital yang menggunakan get logik, sistem angka ini digunakan dalam semua komputer moden.

## Sejarah

}} (See Bacon's cipher.)

Sistem perduaan moden didokumentasi sepenuhnya dalam rencana *Explication de l'Arithmétique Binaire (1703) dari Gottfried Leibniz.* Sistem Leibniz menggunakan 0 dan 1, seperti sistem angka perduaan moden. Sebagai seorang *Sinophile*, Leibniz menyedari mengenai *I Ching* dan mencatat dengan ketakjuban bagaimana hexagrams correspond to the binary numbers from 0 to 111111, dan concluded that this mapping was evidence of major Chinese accomplishments in the sort of philosophical mathematics he admired.

In 1854, British mathematician George Boole published a landmark paper detailing an algebraic system of logic that would become known as Boolean algebra. His logical calculus was to become instrumental in the design of digital electronic circuitry.

In 1937, Claude Shannon menulis tesis sarjana MIT-nya yang menggunakan kaedah algebra Boolean dan aritmetik binari menggunakan geganti dan suis elektronik buat pertama kalinya dalam sejarah. Tesis bertajuk *[[A Symbolic Analysis of Relay dan Switching Circuits]]* ini mengasaskan reka bentuk litar digital yang umumnya praktikal.

In November 1937, George Stibitz, then working at Bell Labs, completed a relay-based computer he dubbed the "Model K" (for "**K**itchen", where he had assembled it), which calculated using binary addition. Bell Labs thus authorized a full research programme in late 1938 with Stibitz at the helm. Their Complex Number Computer, completed January 8, 1940, was able to  calculate complex numbers. In a demonstration to the American Mathematical Society conference at Dartmouth College on September 11, 1940, Stibitz was able to send the Complex Number Calculator remote commands over telephone lines by a teletype. It was the first computing machine ever used remotely over a phone line. Some participants of the conference who witnessed the demonstration were John Von Neumann, John Mauchly dan Norbert Wiener, who wrote about it in his memoirs.-->

## Pewakilan
Sebuah nombor binari boleh diwakili mana-mana turutan bit (angka binari), di mana turutan sebegini pula diwakili sebarang mekanisme berkeupayaan berada dalam dua keadaan yang eksklusif sesama sendiri. Turutan simbol yang berikut boleh ditafsirkan bernilai angka binari sebanyak 667:

 1 0 1 0 0 1 1 0 1 1
 | − | − − | | − | |
 x o x o o x x o x x
 y n y n n y y n y y

Nilai angka yang diwakili dalam setiap keadaan bergantung kepada nilai yang diberikan setiap simbol. Angka nilai ini boleh diwakili oleh dua voltan berbeza dalam komputer; kekutuban magnet barangkali akan digunakan dalam cakera magnet, misalnya. A "positive", "yes", or "on" state is not necessarily equivalent to the numerical value of one; it depends on the architecture in use.

In keeping with customary representation of numerals using Arabic numerals, binary numbers are commonly written using the symbols **0** dan **1**. When written, binary numerals are often subscripted, prefixed or suffixed in order to indicate their base, or radix. The following notations are equivalent:

:100101 binary (explicit statement of format)
:100101b (imbuhan ahkiran menunjukkan angka perduaan)
:100101B (imbuhan ahkiran menunjukkan angka perduaan)
:bin 100101 (imbuhan awalan menunjukkan angka perduaan)
:1001012 (a subscript indicating base-2 (binary) notation)
:%100101 (imbuhan awalan menunjukkan angka perduaan)
:0b100101 (imbuhan awalan menunjukkan angka perduaan, common in programming languages)

Angka perduaan biasanya disebut digit demi digit, in order to distinguish them from decimal numbers. Contohnya, the binary numeral 100 dilafazkan *satu kosong kosong*, bukannya *seratus*, to make its binary nature explicit, dan untuk tujuan kebetulan. Since the binary numeral 100 is equal to the decimal value four, it would be confusing to refer to the numeral as *one hundred*.

## Mengira menggunakan angka perduaan

Counting in binary is similar to counting in any other nombor system. Beginning with a single digit, counting proceeds through each symbol, in increasing order. Decimal counting uses the abjad **0** hingga **9**, manakala angka perduaan hanya menggunakan abjad **0** dan **1**.

When the symbols for the first digit are exhausted, the next-higher digit (to the left) is incremented, dan counting starts
over at 0. In decimal, counting proceeds like so:

:000, 001, 002, ... 007, 008, 009, (rightmost digit starts over, dan next digit is incremented)
:0**1**0, 011, 012, ...
:&nbsp;&nbsp;&nbsp;...
:090, 091, 092, ... 097, 098, 099, (rightmost two digits start over, dan next digit is incremented)
:**1**00, 101, 102, ...

Sesudah sampai digit 9, satu penaikan mengsetkan semulanya ke 0 tetapi juga menyebabkan penaikan digit ke kiri. Dalam sistem asas dua, mengira adalah sama tetapi dua abjad iaitu 0 dan 1 digunakan. Jadi sesetelah suatu digit sampai nombor 1, penaikan mengsetkan semulanya ke 0 tetapi menyebabkan penaikan digit kirinya:

:0000,
:000**1**, (rightmost digit starts over, dan next digit is incremented)
:00**1**0, 0011, (rightmost two digits start over, dan next digit is incremented)
:0**1**00, 0101, 0110, 0111, (rightmost three digits start over, dan the next digit is incremented)
:**1**000, 1001, ...

Since binary is a base-2 system, each digit represents an increasing power of 2, with the rightmost digit representing 20, the next representing 21, then 22, dan so on. To determine the decimal representation of a binary nombor simply take the sum of the products of the binary digits dan the powers of 2 which they represent. Contohnya, nombor binari:

100101

ditukar ke bentuk perpuluhan dengan:

[(**1**) × 25] + [(**0**) × 24] + [(**0**) × 23] + [(**1**) × 22] + [(**0**) × 21] + [(**1**) × 20] =

[**1** × 32] + [**0** × 16] + [**0** × 8] + [**1** × 4] + [**0** × 2] + [**1** × 1] = 37

To create higher numbers, additional digits are simply added to the left side of the binary representation.

## Pecahan dalam sistem perduaan

Fractions in binary only terminate if the denominator has 2 as the only prime factor. As a hasil, \tfrac{1}{10} does not have a finite binary representation, dan this causes 10(0.1) to be not precisely equal to 1 in floating point arithmetic. As an example, to interpret the binary expression for 1/3 = .010101..., this means: 1/3 = 0 × **2<sup>−1</sup>** + 1 × **2<sup>−2</sup>** + 0 × **2<sup>−3</sup>** +  1 × **2<sup>−4</sup>** + ... = 0.3125 + ... An exact value cannot be found with a sum of a finite nombor of inverse powers of two, dan zeros dan ones alternate forever.

## Pengiraan sistem asas dua
Pengiraan dalam angka perduaan tidaklah berbeza sangat dengan pengiraan dalam sistem nombor lain. Operasi tambah, tolak, darab dan bahagi dapat dilakukan dengan angka perduaan.

### Penambahan

Operasi pengiraan paling mudah dalam sistem angka perduaan adalah penambahan. Dengan penambahan dua tunggal-digit binary numbers is relatively simple, using a form of carrying:

:0 + 0 → 0
:0 + 1 → 1
:1 + 0 → 1
:1 + 1 → 10, carry 1 (kerana 1 + 1 = 0 + 1 × binary 10)
Penambahan dua angka "1" menghasilkan angka "0", manakala 1 ditambah pada lajur seterusnya. This is similar to what happens in decimal when certain single-digit numbers are added together; if the hasil equals or exceeds the value of the radix (10), the digit to the left is incremented:

:5 + 5 → 0, carry 1 (since 5 + 5 = 0 + 1 × 10)
:7 + 9 → 6, carry 1 (since 7 + 9 = 6 + 1 × 10)

Ini dikenali sebagai *carrying*.Bila hasil of an addition exceeds the value of a digit, the procedure is to "carry" the excess amount divided by the radix (that is, 10/10) to the left, adding it to the next positional value. This is correct since the next position has a weight that is higher by a factor equal to the radix. Carrying works the same way in binary:

   1 1 1 1 1  (carried digits)
     0 1 1 0 1
 +   1 0 1 1 1
 -------------
 = 1 0 0 1 0 0

Dalam contoh ini, dua angka sedang ditambah: 011012 (1310) dan 101112 (2310). The top row shows the carry bits used. Starting in the rightmost column, 1 + 1 = 102. The 1 is carried to the left, dan the 0 is written at the bottom of the rightmost column. The second column from the right is added: 1 + 0 + 1 = 102 again; the 1 is carried, dan 0 is written at the bottom. The third column: 1 + 1 + 1 = 112. This time, a 1 is carried, dan a 1 is written in the bottom row. Proceeding like this gives the final answer 1001002 (36 decimal).

When computers must add two numbers, the rule that:
x xor y = (x + y) mod 2
for any two bits x dan y allows for very fast calculation, as well.

A simplification for many binary addition problems is the Long Carry Method or Brookhouse Method of Binary Addition.  This method is generally useful in any binary addition where one of the numbers has a long string of  “1” digits.  For example the following large binary numbers can be added in two simple steps without multiple carries from one place to the next.

   1 1 1   1 1 1 1 1   (carried digits)                   (Long Carry Method)
     1 1 1 0 1 1 1 1 1 0                              1 1 1 0 1 1 1 1 1 0
 +   1 0 1 0 1 1 0 0 1 1            Versus:       +   1 0 1 0 1 1 0 0 1 1  add crossed out digits first
 -----------------------                          + 1 0 0 0 1 0 0 0 0 0 0  = sum of crossed out digits
 = 1 1 0 0 1 1 1 0 0 0 1                          -----------------------  now add remaining digits
                                                    1 1 0 0 1 1 1 0 0 0 1

Dalam contoh ini, dua nombor ditambah bersama-sama: 1 1 1 0 1 1 1 1 1 02 (95810) dan 1 0 1 0 1 1 0 0 1 12 (69110). The top row shows the carry bits used. Instead of the standard carry from one column to the next, the lowest place-valued "1" with a "1" in the corresponding place value beneath it may be added dan a "1" may be carried to one digit past the end of the series.  These numbers must be crossed off since they are already added.  Then simply add that hasil to the uncanceled digits in the second row. Proceeding like this gives the final answer  1 1 0 0 1 1 1 0 0 0 12 (164910).

#### Jadual Penambahan

### Penolakan

Penolakan berfungsi dengan cara yang sama

:0 − 0 → 0
:0 − 1 → 1, pinjam 1
:1 − 0 → 1
:1 − 1 → 0
Penolakan satu angka "1" daripada angka "0" menghasilkan angka "1" manakala 1 akan ditolak daripada lajur seterusnya - ini dikenali sebagai *peminjaman*. The principle is the same as for carrying. When the hasil of a subtraction is less than 0, the least possible value of a digit, the procedure is to "borrow" the deficit divided by the radix (that is, 10/10) from the left, subtracting it from the next positional value.

     *   * * *   (starred columns are borrowed from)
   1 1 0 1 1 1 0
 −     1 0 1 1 1
 ----------------
 = 1 0 1 0 1 1 1

Penolakan nombor positif ialah bersamaan dengan to *penambaham* lnombor negatif bernilai absolut sama; computers typically use two's complement notation to represent negative values. This notation eliminates the need for a separate "subtract" operation. Using two's complement notation subtraction can be summarized by the following formula:

**A − B = A + not B + 1**

Untuk maklumat lanjut , lihat two's complement.

### Pendaraban
Pendaraban dalam sistem binari sama kaedahnya sepertimana pendaraban yang biasa. Nombor-nombor *A* dan *B* boleh didarabkan dengan hasil separa: untuk setiap angka dalam *B*, hasil angka tersebut dalam *A* dikira dan ditulis dalam garisan yang baru lalu beralih ke kiri agar angka yang paling kanan selari dengan angka *B* yang digunakan. Jumlah kesemua hasil separa akan memberikan hasil akhir kiraan.

Memandangkan hanya ada dua angka yang didapati dalam sistem binari, hanya ada dua hasil yang berkemungkinan sahaja yang diperoleh daripada pendaraban separa ini:

* Jika digit dalam *B* adalah 0, hasil separa juga adalah 0
* Jika digit dalam *B* adalah 1, hasil separa sama dengan *A*

Contohnya, nombor binari 1011 dan 1010 didarabkan seperti berikut:

            1 0 1 1   (A)
          × 1 0 1 0   (B)
          ---------
            0 0 0 0   ← sama nilainya dengan 0 dalam B
    +     1 0 1 1     ← sama nilainya dengan 1 dalam B
    +   0 0 0 0 
    + 1 0 1 1 
    ---------------
    = 1 1 0 1 1 1 0

Nombor binari juga boleh didarab dengan bit selepas titik perduaan:

                1 0 1.1 0 1   (A) (5.625 dalam nilai perpuluhan)
              ×   1 1 0.0 1   (B) (6.25 dalam nilai perpuluhan)
              -------------
                1 0 1 1 0 1   ← sama nilainya dengan 1 dalam B
    +         0 0 0 0 0 0     ← sama nilainya dengan 0 dalam B
    +       0 0 0 0 0 0
    +     1 0 1 1 0 1
    +   1 0 1 1 0 1
    -----------------------
    = 1 0 0 0 1 1.0 0 1 0 1   (35.15625 dalam perpuluhan)

Lihat juga algoritma pendaraban Booth.

#### Jadual sifir pendaraban

### Pembahagian
:
Pembahagian binari juga adalah sama dengan perpuluhannya: yang senilai

Pembahagi yang digunakan di sini ialah 1012, atau 5 perpuluhan, sementara the dividend is 110112, atau 27 perpuluhan. Kaedah yang dilakukan sama sepertimana dalam pembahagian panjang perpuluhan; here, the divisor 1012 goes into the first three digits 1102 of the dividend one time, so a "1" is written on the top line. This hasil is multiplied by the divisor, dan subtracted from the first three digits of the dividend; the next digit (a "1") is included to obtain a new three-digit sequence:

               1
         ___________
 1 0 1   ) 1 1 0 1 1
         − 1 0 1
           -----
             0 1 1

Prosedur ini diulangi dengan turutan yang baru lalu berterusan sehingga angka-angka dibahagi telah digunakan sepenuhnya:

              1 0 1
        ___________
 1 0 1  ) 1 1 0 1 1
        − 1 0 1
          -----
            0 1 1
          − 0 0 0
            -----
              1 1 1
            − 1 0 1
              -----
                1 0

Maka 110112 yang dibahagi denhan 1012 ialah 1012, seperti yang ditunjukkan pada garisan atas, manakala baki pada garisan bawah ialah 27, di mana ia dibahagi 5 menjadi 5 berbaki 2.

## Bitwise operations

Though not directly related to the numerical interpretation of binary symbols, sequences of bits may be manipulated using Boolean logical operators. When a string of binary symbols is manipulated in this way, it is called a bitwise operation; the logical operators AND, OR, dan XOR may be performed on corresponding bits in two binary numerals provided as input. The logical NOT operation may be performed on individual bits in a single binary numeral provided as input. Sometimes, such operations may be used as arithmetic short-cuts, dan may have other computational benefits as well.  For example, an arithmetic shift left of a binary nombor is the equivalent of multiplication by a (positive, integral) power of 2.

## Penukaran dari dan ke sistem angka lain
### Perpuluhan
Nombor asas 10 ditukarkan kepada nombor asas-2 (binary) melalui pembahagian dengan dua dan bakinya adalah bit kurang bererti. Hasil (integer)nya sekali lagi dibahagikan dua, dan bakinya adalah bit paling bererti berikut. Proses ini berulang sehingga hasil pembahagian menjadi sifar.

Conversion from base-2 to base-10 proceeds by applying the preceding algorithm, so to speak, in reverse. The bits of the binary nombor are used one by one, starting with the most significant (leftmost) bit. Beginning with the value 0, repeatedly double the prior value dan add the next bit to produce the next value. This can be organized in a multi-column table. For example to convert 100101011012 to decimal:

:

Hasil adalah 119710. Note that the first Prior Value of 0 is simply an initial decimal value. This method is an application of the skema Horner.

The fractional parts of a nombor are converted with similar methods. They are again based on the equivalence of shifting with doubling or halving.

In a fractional binary nombor such as .110101101012, the first digit is \begin{matrix} \frac{1}{2} \end{matrix}, the second \begin{matrix} (\frac{1}{2})^2 = \frac{1}{4} \end{matrix}, etc. So if there is a 1 in the first place after the decimal, then the nombor is at least \begin{matrix} \frac{1}{2} \end{matrix}, dan vice versa. Double that nombor is at least 1. This suggests the algorithm: Repeatedly double the nombor to be converted, record if the hasil is at least 1, dan then throw away the integer part.

Contohnya, \begin{matrix} (\frac{1}{3}) \end{matrix}10, dalam angka perduaan, adalah:

:

Thus the repeating decimal fraction 0.... is equivalent to the repeating binary fraction 0.... .

Or for example, 0.110, in binary, is:

:

This is also a repeating binary fraction 0.0... .  It may come as a surprise that terminating decimal fractions can have repeating expansions in binary. It is for this reason that many are surprised to discover that 0.1 + ... + 0.1, (10 additions) differs from 1 in floating point arithmetic. In fact, the only binary fractions with terminating expansions are of the form of an integer divided by a power of 2, which 1/10 is not.

The final conversion is from binary to decimal fractions. The only difficulty arises with repeating fractions, but otherwise the method is to shift the fraction to an integer, convert it as above, dan then divide by the appropriate power of two in the decimal base. For example:

:

Another way of converting from binary to decimal, often quicker for a person familiar with hexadecimal, is to do so indirectly—first converting (x in binary) into (x in hexadecimal) dan then converting (x in hexadecimal) into (x in decimal).

For very large numbers, these simple methods are inefficient because they perform a large nombor of multiplications or divisions where one operand is very large. A simple divide-dan-conquer algorithm is more effective asymptotically: given a binary nombor, it is divided by 10*k*, where *k* is chosen so that the quotient roughly equals the remainder; then each of these pieces is converted to decimal dan the two are concatenated. Given a decimal nombor, it can be split into two pieces of about the same size, each of which is converted to binary, whereupon the first converted piece is multiplied by 10*k* dan added to the second converted piece, where *k* is the nombor of decimal digits in the second, least-significant piece before conversion.

### Hexadecimal

Binary may be converted to dan from hexadecimal dengan lebih senang. Hal ini kerana radiks sistem angka perenambelasan (16) adalah kuasa radiks sistem angka perduaan (2). More specifically, 16 = 24, jadi ia mengambil empat digit perduaan untuk mewakili satu digit perenambelasan, seperti yang ditunjukkan jadual kanan.

To convert a hexadecimal nombor into its binary equivalent, simply substitute the corresponding binary digits:

:3A16 = 0011 10102
:E716 = 1110 01112

To convert a binary nombor into its hexadecimal equivalent, divide it into groups of four bits. If the nombor of bits isn't a multiple of four, simply insert extra **0** bits at the left (called padding). For example:

:10100102 = 0101 0010 grouped with padding = 5216
:110111012 = 1101 1101 grouped = DD16

To convert a hexadecimal nombor into its decimal equivalent, multiply the decimal equivalent of each hexadecimal digit by the corresponding power of 16 dan add the resulting values:

:C0E716 = (12 × 163) + (0 × 162) + (14 × 161) + (7 × 160) = (12 × 4096) + (0 × 256) + (14 × 16) + (7 × 1) = 49,38310

### Perlapanan (oktal)
Nombor binari juga mudah ditukarkan kepada sistem angka octal numeral system, since octal uses a radix of 8 yang merupakan hasil kuasa dua (yakni, 23, maka tiga angka binari diperlukan untuk mewakili satu angka oktal). Penyelarian (*correspondence*) antara nombor-nombor oktal dan binari adalah sama untuk lapan angka pertama perenampuluhan dalam jadual di atas. Perduaan 000 bersamaan dengan angka perlapanan 0, perduaan 111 bersamaan dengan perlapanan 7, dan begitulah seterusnya.

:

Penukaran daripada sistem perlapanan kepada sistem perduaan dijalankan menggunakan jalan yang sama sepertimana dalam sistem perenampuluhan:

:658 = 110 1012
:178 = 001 1112

Manakala mengikut arah yang berlainan pula:

:1011002 = 101 1002 digabung = 548
:100112 = 010 0112 digabung dengan padding = 238

Dan dari sistem perlapanan kepada sistem perpuluhan:

:658 = (6 × 81) + (5 × 80) = (6 × 8) + (5 × 1) = 5310
:1278 = (1 × 82) + (2 × 81) + (7 × 80) = (1 × 64) + (2 × 8) + (7 × 1) = 8710

## Representing real numbers
Non-integers can be represented by using negative powers, which are set off from the other digits by means of a radix point (called a decimal point in the decimal system). For example, the binary nombor 11.012 thus means:

:

For a total of 3.25 decimal.

All dyadic rational numbers \frac{p}{2^a} have a *terminating* binary numeral—the binary representation has a finite nombor of terms after the radix point.  Other rational numbers have binary representation, but instead of terminating, they *recur*, with a finite sequence of digits repeating indefinitely. For instance

:\frac{1_{10}}{3_{10}} = \frac{1_2}{11_2} = 0.01010101...2

:\frac{12_{10}}{17_{10}} = \frac{1100_2}{10001_2} = 0.10110100 10110100 ...2

The phenomenon that the binary representation of any rational is either terminating or recurring also occurs in other radix-based numeral systems.  See, for instance, the explanation in decimal.  Another similarity is the existence of alternative representations for any terminating representation, relying on the fact that 0.111111... is the sum of the geometric series 2−1 + 2−2 + 2−3 + ... which is 1.

Nombor perduaan yang tidak menyingkir atau muncul semula mewakili nombor tak nisbah.  Misalnya,
* 0.10100100010000100000100.... punya corak, namun corak tersebut tidak berilang dengan tetap maka ia tidak bernisbah.
* 1.0110101000001001111001100110011111110... ialah wakilan binari \sqrt{2}, punca kuasa 2, satu lagi nombor tak nisbah kerana ia tidak punya corak yang boleh dikenalpasti. Lihat nombor tak nisbah.

## On-line live converters dan calculators
* On-line converter for all types of binary numbers (including single dan double precision IEEE754 numbers)
* On-line converter for any base
* Online binary calculator supports addition, subtraction, multiplication dan division
* Binary converter with direct access to bits 

## Lihat juga
*Binary-coded decimal
*Finger binary
*Kod Grey
*linear feedback shift register
*Offset binary
*Quibinary
*Reduction of summands
*Redundant binary representation
*SZTAKI Desktop Grid searches for generalized binary nombor systems up to dimension 11.
*Two's complement

## Nota

## Rujukan
* Sanchez, Julio; Canton, Maria P. (2007), Microcontroller programming : the microchip PIC, Boca Raton, FL: CRC Press, p.&nbsp;37, ISBN 0849371899

## Pautan luar

* A brief overview of Leibniz dan the connection to binary numbers
* Binary System at cut-the-knot
* Conversion of Fractions at cut-the-knot
* Binary Digits at Math Is Fun
* How to Convert from Decimal to Binary at wikiHow
* Learning exercise for children at CircuitDesign.info
* Binary Counter with Kids 
* “Magic” Card Trick
* Quick reference on Howto read binary