Saturday, March 16, 2013

Wednesday, March 13, 2013

Bentuk bilangan dalam kode form


Seperti dijelaskan dalam pendahuluan, BCD (Biner Code Desimal) mengambil keuntungan dari fakta bahwa setiap angka desimal yang dapat diwakili oleh pola bit empat:

Decimal
Digit
BCD
8 4 2 1
0
0 0 0 0
1
0 0 0 1
2
0 0 1 0
3
0 0 1 1
4
0 1 0 0
5
0 1 0 1
6
0 1 1 0
7
0 1 1 1
8
1 0 0 0
9
1 0 0 1
















Sebagai toko komputer data dalam byte 8-bit yang paling, adalah mungkin untuk menggunakan salah satu metode berikut untuk mengkodekan nomor BCD: 

    Tak terkompresi: angka masing-masing dikodekan ke dalam satu byte, dengan empat bit yang mewakili angka dan bit sisanya memiliki makna. 
    Dikemas: dua angka dikodekan ke dalam satu byte, dengan satu angka dalam menggigit paling signifikan (bit 0 sampai 3) dan angka lainnya dalam menggigit paling signifikan (bit 4 sampai 7). 

Sebagai contoh, pengkodean angka desimal 91 menggunakan hasil BCD terkompresi dalam pola biner berikut dua byte: 

 Desimal          :           9                              1 
 Binary                        : 0000 1001                 0000 0001 

Dalam BCD dikemas, jumlah yang sama akan masuk ke dalam satu byte: 

 Desimal          :    9         1 
 Binary                        : 1001  0001 

Oleh karena itu rentang numerik untuk satu byte BCD terkompresi adalah nol sampai sembilan inklusif, sedangkan kisaran untuk satu BCD dikemas adalah nol sampai sembilan puluh sembilan inklusif. 

Untuk mewakili angka lebih besar dari kisaran satu byte setiap jumlah byte yang berdekatan dapat digunakan. Misalnya, untuk mewakili angka desimal 12345 dalam BCD dikemas, menggunakan format big-endian, program akan mengkodekan sebagai berikut: 

 Desimal          :                1       2       3       4       5 
 Binary                        : 0000 0001 0010 0011 0100 0101 

Perhatikan bahwa menggigit paling signifikan byte paling signifikan adalah nol, menyiratkan bahwa jumlah ini dalam aktualitas 012345. Juga perhatikan bagaimana dikemas BCD lebih efisien dalam penggunaan penyimpanan dibandingkan dengan BCD terkompresi, pengkodean nomor yang sama dalam format terkompresi akan mengkonsumsi penyimpanan 100 persen lebih. 

Pergeseran dan operasi masking digunakan untuk mengemas atau membongkar sebuah BCD dikemas digit. Operasi logis lainnya digunakan untuk mengkonversi angka ke pola bit yang setara atau membalikkan proses. 


BCD dalam Elektronika

BCD sangat umum dalam sistem elektronik dimana nilai numerik yang akan ditampilkan, terutama dalam sistem terdiri semata-mata logika digital, dan tidak mengandung mikroprosesor. Dengan memanfaatkan BCD, manipulasi data numerik untuk layar dapat sangat disederhanakan dengan memperlakukan setiap digit sebagai single terpisah sub-sirkuit. Ini cocok lebih erat realitas fisik menampilkan hardware desainer-mungkin memilih untuk menggunakan serangkaian terpisah identik tujuh-segmen display untuk membangun sebuah sirkuit metering, misalnya. Jika jumlah angka disimpan dan dimanipulasi sebagai biner murni, interfacing sedemikian menampilkan akan membutuhkan sirkuit kompleks. Oleh karena itu, dalam kasus di mana perhitungan relatif sederhana yang bekerja di seluruh dengan BCD dapat mengakibatkan sistem secara keseluruhan lebih sederhana daripada konversi ke biner. 

Argumen yang sama berlaku ketika hardware jenis ini menggunakan mikrokontroler tertanam atau prosesor kecil lainnya. Seringkali, hasil kode yang lebih kecil ketika mewakili angka internal dalam format BCD, karena konversi dari atau ke representasi biner bisa mahal pada prosesor terbatas seperti. Untuk aplikasi ini, beberapa prosesor kecil fitur mode BCD aritmatika, yang membantu saat menulis rutinitas yang memanipulasi jumlah BCD. 


Dikemas BCD

Sebuah variasi umum pengkodean dua-digit-per-byte disebut dikemas BCD (atau desimal hanya dikemas), yang telah digunakan sejak tahun 1960-an atau sebelumnya dan dilaksanakan di semua hardware mainframe IBM sejak saat itu. Dalam representasi kebanyakan, satu atau lebih byte mengadakan integer desimal, di mana masing-masing dua camilan dari setiap byte mewakili angka desimal, dengan digit lebih signifikan di paruh atas setiap byte, dan dengan byte paling kiri (yang berada di memori terendah address) berisi angka yang paling signifikan dari nilai desimal dikemas. Menggigit lebih rendah dari byte paling kanan biasanya digunakan sebagai bendera tanda (meskipun di beberapa representasi menggigit ini dapat digunakan sebagai digit paling signifikan jika nilai desimal dikemas tidak memiliki tanda sama sekali, yaitu, adalah murni unsigned). Sebagai contoh, nilai 4-byte terdiri dari 8 camilan, dimana 7 atas camilan menyimpan digit dari nilai desimal 7-digit dan menggigit terendah menunjukkan tanda nilai integer desimal. 

Nilai tanda Standar 1100 (C hex) untuk positif (+) dan 1101 (D) untuk negatif (-). Konvensi ini berasal dari singkatan untuk istilah akuntansi (Kredit dan Debit), coding desimal sebagai dikemas secara luas digunakan dalam sistem akuntansi. [Rujukan?] Tanda-tanda lainnya adalah diperbolehkan 1010 (A) dan 1110 (E) untuk positif dan 1011 (B) untuk negatif. Beberapa implementasi juga menyediakan nilai BCD unsigned dengan menggigit tanda 1111 (F) [rujukan?]. ILE RPG menggunakan 1111 (F) untuk positif dan 1.101 (D) untuk negatif [2] Dalam BCD dikemas, nomor 127 diwakili oleh 0001 0010 0111 1100 (127C) dan -127 diwakili oleh 0001 0010 0111 1.101 (127D). . Burroughs sistem yang digunakan 1.101 (D) untuk negatif, dan nilai lain dianggap nilai tanda positif (prosesor akan menormalkan tanda positif untuk 1100 (C)). 
 

Sign
Digit
BCD
8 4 2 1
Sign
Notes
A
1 0 1 0
+

B
1 0 1 1

C
1 1 0 0
+
Preferred
D
1 1 0 1
Preferred
E
1 1 1 0
+

F
1 1 1 1
+
Unsigned
 

Tidak peduli berapa banyak byte lebar sebuah kata, selalu ada bahkan jumlah byte camilan karena masing-masing memiliki dua dari mereka. Oleh karena itu, kata byte n dapat berisi hingga (2n) -1 angka desimal, yang selalu ganjil digit. Sebuah angka desimal dengan digit d memerlukan ½ (d +1) byte ruang penyimpanan. 

Sebagai contoh, sebuah 4-byte (32-bit) kata dapat menampung tujuh angka desimal ditambah tanda, dan dapat mewakili nilai-nilai mulai dari ± 9.999.999. Dengan demikian jumlah -1.234.567 adalah 7 digit lebar dan dikodekan sebagai: 

0001 0010 0011 0100 0101 0110 0111 1101 
      1       2       3       4       5       6       7       - 

(Perhatikan bahwa, seperti string karakter, byte pertama dari desimal dikemas - dengan dua digit paling signifikan -. Biasanya disimpan dalam alamat terendah dalam memori, independen dari endianness dari mesin) 

Sebaliknya, integer pelengkap 4-byte dua biner dapat mewakili nilai-nilai dari -2147483648 ke 2147483647. 

Sementara BCD dikemas tidak membuat penggunaan optimal penyimpanan (sekitar 1/6 dari memori yang digunakan terbuang), konversi ke ASCII, EBCDIC, atau pengkodean berbagai Unicode masih sepele, karena tidak ada operasi aritmatika yang diperlukan. Persyaratan penyimpanan tambahan biasanya diimbangi oleh kebutuhan untuk akurasi dan kompatibilitas dengan perhitungan kalkulator atau tangan yang fixed-point aritmatika desimal menyediakan. Padat kemasan dari BCD ada yang menghindari hukuman penyimpanan dan juga membutuhkan operasi aritmatika tidak untuk konversi umum. 

BCD dikemas didukung dalam bahasa pemrograman COBOL sebagai "KOMPUTASI-3" (perpanjangan IBM diadopsi oleh banyak vendor compiler lain) atau "dikemas-DECIMAL" (bagian dari tahun 1985 COBOL standar) tipe data. Selain IBM System/360 dan mainframe kemudian kompatibel, dikemas BCD dilaksanakan dalam instruksi asli set prosesor VAX asli dari Digital Equipment Corporation dan format asli untuk garis Perusahaan Burroughs Medium Sistem mainframe (turun dari tahun 1950 Electrodata 200 series).


Fixed-point dikemas desimal

Fixed-point angka desimal yang didukung oleh beberapa bahasa pemrograman (seperti COBOL dan PL / I). Bahasa ini memungkinkan programmer untuk menentukan titik desimal implisit di depan salah satu digit. Misalnya, nilai desimal dikemas dikodekan dengan byte 12 34 56 7C merupakan nilai fixed-point +1,234.567 ketika titik desimal tersirat terletak di antara angka 4 dan 5: 

12  34  56  7C 
12  34. 56  7 + 

Titik desimal tidak benar-benar disimpan dalam memori, sebagai format penyimpanan BCD dikemas tidak menyediakan untuk itu. Lokasinya hanya diketahui compiler dan kode yang dihasilkan bertindak sesuai untuk berbagai operasi aritmatika.


Tinggi-density pengkodean

Jika digit desimal memerlukan empat bit, kemudian tiga angka desimal memerlukan 12 bit. Namun, sejak tahun 210 (1.024) lebih besar dari 103 (1.000), jika tiga angka desimal dikodekan bersama-sama, hanya 10 bit yang diperlukan. Dua pengkodean tersebut Chen-Ho encoding dan Decimal berpenduduk padat kemasan. Yang terakhir ini memiliki keuntungan bahwa himpunan bagian dari encoding menyandikan dua digit dalam tujuh bit yang optimal dan satu digit dalam empat bit, seperti dalam BCD biasa.


Dikategorikan desimal

Beberapa implementasi, untuk sistem mainframe IBM misalnya, dukungan dikategorikan representasi numerik desimal. Setiap digit desimal disimpan dalam satu byte, dengan empat bit rendah pengkodean digit dalam bentuk BCD. Empat tingkat di atasnya bit, yang disebut "zona" bit, biasanya diatur ke nilai tetap sehingga byte memegang nilai karakter yang sesuai dengan digit. Sistem EBCDIC menggunakan nilai zona 1111 (hex F), ini menghasilkan byte dalam kisaran F0 sampai F9 (hex), yang merupakan kode EBCDIC untuk karakter "0" melalui "9". Demikian pula, sistem ASCII menggunakan nilai zona 0011 (hex 3), memberikan kode karakter 30 hingga 39 (hex). 

Untuk menandatangani nilai desimal dikategorikan, yang (paling signifikan) paling kanan zona menggigit memegang tanda digit, yang merupakan seperangkat nilai yang sama yang digunakan untuk menandatangani angka desimal dikemas (lihat di atas). Jadi nilai desimal dikategorikan dikodekan sebagai byte hex F1 F2 D3 mewakili nilai desimal ditandatangani -123: 

F1  F2  D3 
 1     2    -3 

Tabel konversi EBCDIC dikategorikan desimal
 

BCD Digit
Hexadecimal
EBCDIC Character
0+
C0
A0
E0
F0
{ (*)

\ (*)
0
1+
C1
A1
E1
F1
A
~ (*)

1
2+
C2
A2
E2
F2
B
s
S
2
3+
C3
A3
E3
F3
C
t
T
3
4+
C4
A4
E4
F4
D
u
U
4
5+
C5
A5
E5
F5
E
v
V
5
6+
C6
A6
E6
F6
F
w
W
6
7+
C7
A7
E7
F7
G
x
X
7
8+
C8
A8
E8
F8
H
y
Y
8
9+
C9
A9
E9
F9
I
z
Z
9
0−
D0
B0


}  (*)
^  (*)


1−
D1
B1


J



2−
D2
B2


K



3−
D3
B3


L



4−
D4
B4


M



5−
D5
B5


N



6−
D6
B6


O



7−
D7
B7


P



8−
D8
B8


Q



9−
D9
B9


R





(*) Catatan: Karakter ini berbeda-beda tergantung pada pengaturan kode karakter halaman lokal.






 
Fixed-point dikategorikan desimal 

Beberapa bahasa (seperti COBOL dan PL / I) langsung mendukung fixed-point nilai desimal dikategorikan, menetapkan titik desimal implisit di beberapa lokasi antara angka desimal dari nomor. Misalnya, diberi nilai enam byte ditandatangani desimal dikategorikan dengan titik desimal tersirat di sebelah kanan angka keempat, byte hex F1 F2 F7 F9 F5 C0 mewakili nilai +1,279.50: 

F1  F2  F7  F9  F5  C0 
  1    2     7    9.   5   +0 

IBM dan BCD 
Artikel utama: BCD (6-bit) 

IBM menggunakan istilah kode-biner desimal dan BCD untuk 6-bit kode alfanumerik yang mewakili angka, huruf besar dan karakter khusus. Beberapa variasi alphamerics BCD digunakan dalam komputer IBM paling awal, termasuk, IBM 1.620 IBM seri 1400, dan anggota Arsitektur non-Desimal dari IBM 700/7000 series. 

IBM seri 1.400 adalah karakter-addressable mesin, setiap lokasi menjadi enam bit berlabel B, A, 8, 4, 2 dan 1, ditambah pemeriksaan bit paritas ganjil (C) dan tanda bit kata (M). Untuk pengkodean angka 1 sampai 9, B dan A adalah nol dan nilai digit diwakili oleh standar 4-bit BCD dalam bit 8 sampai 1. Untuk sebagian besar bit karakter lainnya B dan A berasal hanya dari "12", "11", dan "0" "zona pukulan" dalam kode kartu punch karakter, dan bit 8 sampai 1 dari 1 sampai 9 pukulan. Sebuah "12 zona" pukulan menetapkan kedua B dan A, sebuah "zona 11" set B, dan "zona 0" (a 0 pukulan dikombinasikan dengan orang lain) mengatur A. Jadi huruf A, (12,1) dalam menekan format kartu, dikodekan (B, A, 1) dan simbol mata uang $, (11,8,3) pada kartu punch, seperti (B, 8,3). Ini memungkinkan sirkuit untuk mengkonversi antara format kartu punch dan format penyimpanan internal menjadi sangat sederhana dengan hanya beberapa kasus khusus. Salah satu kasus khusus yang penting adalah digit 0, diwakili oleh tunggal 0 pukulan di kartu, dan (8,2) dalam memori utama. [3] 

Memori dari IBM 1.620 diselenggarakan dalam 6-bit digit dialamatkan, 8 biasa,, 4 2, 1 ditambah F, digunakan sebagai bendera dan C, sebuah bit paritas ganjil cek. BCD alphamerics yang dikodekan menggunakan pasangan digit, dengan "zona" dalam bahkan-ditujukan digit dan "digit" di aneh-ditujukan digit, "zona" yang terkait dengan 12,, 11, dan 0 "zona pukulan" sebagai dalam seri 1400. Input / Output terjemahan hardware dikonversi antara pasangan digit internal dan eksternal standar 6-bit kode BCD. 

Dalam Arsitektur Desimal IBM 7070, IBM 7072, dan 7074 IBM alphamerics yang dikodekan menggunakan pasangan digit (menggunakan dua-out-of-lima kode dalam digit, bukan BCD) dari kata-digit 10, dengan "zona" dalam meninggalkan digit dan "digit" di bagian kanan digit. Input / Output terjemahan hardware dikonversi antara pasangan digit internal dan eksternal standar 6-bit kode BCD. 

Dengan diperkenalkannya System/360, IBM memperluas 6-bit alphamerics BCD ke 8-bit EBCDIC, memungkinkan penambahan karakter lebih banyak (misalnya, huruf kecil). Sebuah variabel panjang Dikemas BCD numerik tipe data juga dilaksanakan, memberikan instruksi mesin yang melakukan aritmatika langsung pada data desimal dikemas. 

Pada IBM 1130 dan 1800, dikemas BCD didukung oleh software Paket Subroutine Komersial IBM. 

Hari ini, BCD data masih banyak digunakan dalam prosesor IBM dan database, seperti IBM DB2, mainframe, dan Power6. Dalam produk ini, BCD biasanya dikategorikan BCD (seperti dalam EBCDIC atau ASCII), Dikemas BCD (dua angka desimal per byte), atau "murni" BCD encoding (satu desimal digit disimpan sebagai BCD dalam empat bit rendah setiap byte) . Semua ini digunakan dalam register hardware dan unit pengolahan, dan perangkat lunak.


Lain komputer dan BCD

Digital Equipment Corporation VAX-11 seri termasuk petunjuk yang dapat melakukan aritmatika secara langsung pada data BCD dikemas dan mengkonversi antara data BCD dikemas dan representasi bilangan bulat lainnya. Format BCD dikemas VAX adalah kompatibel dengan IBM System/360 bahwa pada prosesor dan IBM kemudian kompatibel. The MicroVAX dan kemudian VAX implementasi menjatuhkan kemampuan ini dari CPU, tetapi mempertahankan kompatibilitas kode dengan mesin sebelumnya dengan menerapkan petunjuk yang hilang dalam sebuah sistem perpustakaan yang disediakan operasi perangkat lunak. Hal ini dipanggil secara otomatis melalui penanganan pengecualian ketika instruksi tidak lagi dilaksanakan, banyak ditemui, sehingga program menggunakan mereka bisa mengeksekusi tanpa modifikasi pada mesin-mesin baru. 

Pada komputer yang lebih baru kemampuan tersebut hampir selalu diimplementasikan dalam perangkat lunak daripada set instruksi CPU, tapi BCD data numerik masih sangat umum dalam aplikasi komersial dan keuangan. 
Penambahan dengan BCD 

Hal ini dimungkinkan untuk melakukan penambahan BCD dengan terlebih dahulu menambahkan dalam biner, dan kemudian mengkonversi ke BCD sesudahnya. Konversi dari jumlah sederhana dari dua digit bisa dilakukan dengan menambahkan 6 (yaitu, 16 - 10) ketika hasil lima-bit menambahkan sepasang digit memiliki nilai lebih besar dari 9. Sebagai contoh: 

1001 + 1000 = 10001 
      9 +       8 = 17 

Perhatikan bahwa 10001 adalah biner, bukan desimal, representasi dari hasil yang diinginkan. Dalam BCD seperti dalam desimal, tidak bisa ada nilai lebih besar dari 9 (1001) per digit. Untuk memperbaiki hal ini, 6 (0110) ditambahkan ke jumlah itu dan kemudian hasilnya diperlakukan sebagai dua camilan: 

10001 + 0110 = 00010111 => 0001 0111 
      17 +       6 =       2      3             1      7 

Kedua camilan dari hasilnya, 0001 dan 0111, sesuai dengan angka "1" dan "7". Ini "17" di BCD, yang merupakan hasil yang benar hasil. 

Teknik ini dapat diperluas untuk menambahkan beberapa digit dengan menambahkan dalam kelompok dari kanan ke kiri, menyebarkan digit kedua sebagai carry, selalu membandingkan hasil 5-bit dari setiap jumlah digit-pair sampai 9.


Pengurangan dengan BCD 

Pengurangan dilakukan dengan menambahkan komplemen sepuluh itu dari pengurang. Untuk mewakili tanda nomor dalam BCD, nomor 0000 digunakan untuk mewakili angka positif, dan 1001 digunakan untuk mewakili angka negatif. The 14 sisanya kombinasi adalah tanda-tanda yang tidak valid. Untuk menggambarkan ditandatangani BCD pengurangan, mempertimbangkan masalah berikut: 357-432. 

Dalam BCD ditandatangani, 357 adalah 0000 0011 0101 0111. Komplemen sepuluh tentang 432 dapat diperoleh dengan mengambil komplemen sembilan tentang 432, dan kemudian menambahkan satu. Jadi, 999-432 = 567, dan 567 + 1 = 568. Dengan sebelumnya 568 di BCD dengan kode tanda negatif, jumlah -432 dapat diwakili. Jadi, -432 di BCD ditandatangani adalah 1001 0101 0110 1000. 

Sekarang bahwa kedua angka terwakili dalam BCD ditandatangani, mereka dapat ditambahkan bersama-sama: 

0000 0011 0101 0111 + 1001 0101 0110 1000 = 1001 1000 1011 1111 
      0       3       5       7 +       9       5       6       8 =       9        8    11     15 

Karena BCD adalah bentuk representasi desimal, beberapa jumlah digit di atas adalah tidak valid. Dalam hal entri yang tidak valid (setiap digit BCD lebih besar dari 1001) ada, 6 ditambahkan untuk menghasilkan sedikit membawa dan menyebabkan jumlah yang menjadi entri yang valid. Alasan untuk menambahkan 6 adalah bahwa ada 16 nilai BCD kemungkinan 4-bit (sejak 24 = 16), tetapi hanya 10 nilai yang berlaku (0000 sampai 1001). Jadi menambahkan 6 untuk hasil masukan yang salah dalam hal-hal berikut: 

1001 1000 1011 1111 + 0000 0000 0110 0110 = 1001 1001 0010 0101 
      9       8     11     15 +       0       0       6       6 =       9       9       2       5 

Dengan demikian hasil pengurangan adalah 1001 1001 0010 0101 (-925). Untuk memeriksa jawaban, diketahui bahwa bit pertama adalah bit tanda, yang negatif. Hal ini tampaknya benar, karena 357-432 harus menghasilkan angka negatif. Untuk memeriksa sisa digit, mewakili mereka dalam desimal. 1001 0010 0101 adalah 925. Komplemen sepuluh tentang 925 adalah 1000-925 = 999-925 + 1 = 074 + 1 = 75, sehingga jawaban yang dihitung adalah -75. Untuk memeriksa, melakukan pengurangan standar untuk memverifikasi bahwa 357-432 adalah -75. 

Perhatikan bahwa dalam hal terdapat nomor yang berbeda dari camilan yang ditambahkan bersama-sama (seperti 1053-122), nomor dengan jumlah paling sedikit digit pertama harus diisi dengan nol sebelum mengambil komplemen sepuluh atau mengurangi. Jadi, dengan 1053 - 122, 122 akan harus terlebih dahulu harus

it
BCD
8 4 2 1
Excess-3
or
Stibitz Code
BCD 2 4 2 1
or
Aiken Code
BCD
8 4 −2 −1
ASCII
0000 8421
EBCDIC
0000 8421
0
0000
0011
0000
0000
1010
0011 0000
1111 0000
1
0001
0100
0001
0111
0001
0011 0001
1111 0001
2
0010
0101
0010
0110
0010
0011 0010
1111 0010
3
0011
0110
0011
0101
0011
0011 0011
1111 0011
4
0100
0111
0100
0100
0100
0011 0100
1111 0100
5
0101
1000
1011
1011
0101
0011 0101
1111 0101
6
0110
1001
1100
1010
0110
0011 0110
1111 0110
7
0111
1010
1101
1001
0111
0011 0111
1111 0111
8
1000
1011
1110
1000
1000
0011 1000
1111 1000
9
1001
1100
1111
1111
1001
0011 1001
1111 1001
direpresentasikan sebagai 0122, dan melengkapi sepuluh itu dari 0122 harus dihitung.

Latar belakang 

Biner-desimal kode skema yang dijelaskan dalam artikel ini adalah pengkodean yang paling umum, tetapi ada banyak orang lain. Metode di sini dapat disebut sebagai Simple Binary Coded Desimal-(SBCD) atau BCD 8421. Pada header ke meja, '8 4 2 1 ', dll, menunjukkan bobot masing-masing bit menunjukkan, diketahui bahwa kolom kelima dua bobot negatif. Kedua kode karakter ASCII dan EBCDIC untuk digit adalah contoh dari BCD dikategorikan, dan juga ditampilkan dalam tabel. 

Tabel berikut merupakan angka desimal dari 0 sampai 9 dalam sistem BCD berbagai: 
 


  
Hukum sejarah 

Dalam Gottschalk 1.972 kasus v Benson, Mahkamah Agung AS membatalkan keputusan pengadilan yang lebih rendah yang telah memungkinkan paten untuk mengubah nomor BCD dikodekan ke biner pada komputer. Ini adalah kasus penting dalam menentukan paten perangkat lunak dan algoritma.


Perbandingan dengan biner murni
Keuntungan 

    Banyak non-integral nilai-nilai, seperti desimal 0,2, memiliki representasi tempat-nilai tak terbatas dalam biner (0,001100110011 ...) tapi memiliki tempat nilai-terbatas dalam kode-biner desimal (0,0010). Akibatnya sistem yang didasarkan pada kode-biner representasi desimal pecahan desimal menghindari kesalahan yang mewakili dan menghitung nilai-nilai tersebut. 
    Scaling dengan faktor 10 (atau kekuatan 10) sederhana, ini berguna ketika sebuah faktor skala desimal diperlukan untuk mewakili kuantitas non-integer (misalnya, dalam perhitungan keuangan) 
    Pembulatan di batas digit desimal adalah sederhana. Penambahan dan pengurangan dalam desimal tidak memerlukan pembulatan. 
    Alignment dua angka desimal (misalnya 1.3 + 27.08) adalah sederhana, tepat, pergeseran. 
    Konversi ke bentuk karakter atau untuk tampilan (misalnya, ke format berbasis teks seperti XML, atau untuk mendorong sinyal untuk tampilan tujuh-segmen) adalah pemetaan per-digit yang sederhana, dan dapat dilakukan di linear (O (n )) waktu. Konversi dari biner murni melibatkan logika relatif kompleks yang mencakup digit, dan untuk jumlah besar tidak ada algoritma konversi linear-waktu dikenal (lihat sistem biner angka). 

Kekurangan 

    Beberapa operasi yang lebih kompleks untuk diimplementasikan. Penambah membutuhkan logika ekstra untuk menyebabkan mereka untuk membungkus dan menghasilkan carry awal. Sirkuit 15-20 persen lebih diperlukan untuk BCD menambahkan dibandingkan dengan biner murni. [Rujukan?] Perkalian memerlukan penggunaan algoritma yang agak lebih kompleks daripada pergeseran-mask-add (perkalian biner, memerlukan pergeseran biner dan menambahkan atau setara , per-digit atau kelompok digit diperlukan) 
    Standar BCD memerlukan empat bit per digit, ruang sekitar 20 persen lebih dari pengkodean biner (rasio 4 bit untuk log210 bit adalah 1,204). Bila dikemas sehingga tiga digit dikodekan dalam sepuluh bit, overhead penyimpanan sangat berkurang, dengan mengorbankan encoding yang unaligned dengan 8-bit byte batas umum pada hardware yang telah ada, sehingga implementasi lebih lambat pada sistem ini. 
    Implementasi yang ada Praktis BCD biasanya lebih lambat dari operasi pada representasi biner, terutama pada embedded system, [rujukan?] Karena dukungan prosesor terbatas untuk operasi BCD asli. 

Aplikasi 

BIOS di komputer pribadi banyak menyimpan tanggal dan waktu di BCD karena MC6818 real-time clock chip yang digunakan dalam PC IBM original AT motherboard menyediakan waktu yang dikodekan dalam BCD. Bentuk ini mudah diubah menjadi ASCII untuk ditampilkan. [4] 

Atari 8-bit keluarga komputer yang digunakan BCD untuk menerapkan algoritma floating-point. MOS 6502 prosesor yang digunakan memiliki mode BCD yang mempengaruhi penambahan dan pengurangan petunjuk. 

Model awal dari PlayStation 3 menyimpan tanggal dan waktu di BCD. Hal ini menyebabkan pemadaman di seluruh dunia konsol pada tanggal 1 Maret 2010. Dua digit terakhir dari tahun disimpan sebagai BCD yang disalahartikan sebagai 16 menyebabkan paradoks in unit, render fungsi yang paling dioperasi.


Representasional variasi 

Implementasi BCD Ada berbagai macam yang mempekerjakan representasi lainnya untuk angka. Kalkulator Programmable diproduksi oleh Texas Instruments, Hewlett-Packard, dan lain-lain biasanya menggunakan format BCD floating-point, biasanya dengan dua atau tiga digit untuk eksponen (desimal). Bit tambahan angka tanda dapat digunakan untuk menunjukkan nilai-nilai numerik khusus, seperti tak terhingga, underflow / overflow, dan kesalahan (layar berkedip).


Signed variasi 

Nilai desimal ditandatangani dapat diwakili dalam beberapa cara. Bahasa pemrograman COBOL, misalnya, mendukung total lima format desimal dikategorikan, masing-masing pengkodean tanda numerik dengan cara yang berbeda: 
Deskripsi Jenis Contoh


Type
Description
Example
Unsigned
No sign nibble
F1 F2 F3
Signed trailing (canonical format)
Sign nibble in the last (least significant) byte
F1 F2 C3
Signed leading (overpunch)
Sign nibble in the first (most significant) byte
C1 F2 F3
Signed trailing separate
Separate sign character byte ('+' or '−') following the digit bytes
F1 F2 F3 2B
Signed leading separate
Separate sign character byte ('+' or '−') preceding the digit bytes
2B F1 F2 F3
   

Kode Biner Desimal Telephony (TBCD) 

GSM dikembangkan TBCD, ekspansi ke BCD mana (tidak terpakai) sisa kombinasi bit yang digunakan untuk menambah karakter telepon tertentu. [5] Hal ini kompatibel dengan BCD. 



Decimal
Digit
BCD
8 4 2 1
*
1 0 1 0
#
1 0 1 1
a
1 1 0 0
b
1 1 0 1
c
1 1 1 0
Used as filler when there is an odd number of digits
1 1 1 1













Digunakan sebagai filler bila ada ganjil angka 1 1 1 1

Kelebihan dan Kelemahan AHP

Kelebihan dan Kelemahan AHP Layaknya sebuah metode analisis, AHP pun memiliki kelebihan dan kelemahan dalam system analisisnya. Keleb...