Sebuah jam biner bisa menggunakan LED untuk mengekspresikan nilai-nilai biner. Dalam jam ini, setiap kolom LED menunjukkan angka desimal biner-kode dari tradisional sexagesimal waktu.
Dalam komputasi dan elektronik sistem, kode-biner desimal ( BCD ) adalah kelas biner pengkodean dari desimal nomor di mana masing-masing desimal digit diwakili oleh sejumlah tetap bit , biasanya empat atau delapan, meskipun ukuran lainnya (seperti enam bit) memiliki telah digunakan secara historis. Pola bit khusus yang kadang-kadang digunakan untuk tanda atau indikasi lain untuk (misalnya, kesalahan atau overflow).
Dalam sistem byte-oriented (yaitu komputer yang paling modern), istilah terkompresi BCD biasanya menyiratkan penuh byte untuk setiap digit (sering termasuk tanda), sedangkan dikemas BCD biasanya mengkodekan dua digit desimal dalam satu byte dengan mengambil keuntungan dari fakta bahwa empat bit cukup untuk mewakili kisaran 0 sampai 9. tepat encoding 4-bit dapat bervariasi namun, karena alasan teknis, lihat Kelebihan-3 misalnya.
Kebajikan utama BCD adalah yang representasi yang lebih akurat dan pembulatan dari jumlah desimal serta kemudahan konversi menjadi representasi terbaca-manusia, dibandingkan dengan biner sistem posisional . Kelemahan utama BCD adalah sedikit peningkatan kompleksitas sirkuit yang diperlukan untuk melaksanakan aritmatika dasar dan penyimpanan sedikit kurang padat.
BCD digunakan di banyak awal komputer desimal . Meskipun BCD tidak seperti yang banyak digunakan seperti di masa lalu, desimal fixed-point dan floating-point format masih penting dan terus digunakan dalam keuangan, komersial, dan industri komputasi, dimana konversi halus dan pecahan pembulatan kesalahan yang melekat dalam floating Titik representasi biner tidak dapat ditoleransi.
BCD mengambil keuntungan dari fakta bahwa salah satu angka desimal dapat diwakili oleh pola empat bit. Cara yang paling jelas dari encoding digit adalah "BCD alami" (NBCD), di mana setiap digit desimal diwakili oleh empat bit yang sesuai nilai biner, seperti yang ditunjukkan pada tabel berikut. Hal ini juga disebut "8421" encoding.
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
Pengkodean lain juga digunakan, termasuk apa yang disebut "4221" dan "7421" - dinamai pembobotan digunakan untuk bit - dan " kelebihan-3 ". [ 2 ] Misalnya digit BCD 6, '0110'b di 8421 notasi, adalah '1100'b di 4221 (dua pengkodean yang mungkin),' 0110'b di 7421, dan '1001'b (6 + 3 = 9) lebih-3.
Seperti kebanyakan komputer menangani data dalam 8-bit byte , adalah mungkin untuk menggunakan salah satu metode berikut untuk mengkodekan nomor BCD:
Tak terkompresi : setiap angka dikodekan ke dalam satu byte, dengan empat bit yang mewakili angka dan bit yang tersisa tidak memiliki signifikansi.
Dikemas : dua angka dikodekan ke dalam satu byte, dengan satu angka di paling signifikan menggigit (bit 0 sampai 3) dan angka lain dalam menggigit paling signifikan (bit 4 sampai 7).
Sebagai contoh, pengkodean angka desimal 91 menggunakan hasil BCD terkompresi dalam pola biner berikut dua byte:
Decimal: 9 1
Binary: 0000 1001 0000 0001
Pada dikemas BCD, jumlah yang sama akan masuk ke dalam satu byte:
Decimal: 9 1
Binary: 1001 0001
Oleh karena itu rentang numerik untuk satu terkompresi BCD byte adalah nol sampai sembilan inklusif, sedangkan kisaran untuk satu dikemas BCD adalah nol sampai sembilan puluh sembilan inklusif.
Untuk mewakili angka lebih besar dari kisaran satu byte sejumlah byte bersebelahan dapat digunakan. Misalnya, untuk mewakili angka desimal 12345 di dikemas BCD, menggunakan big-endian format program akan mengkodekan sebagai berikut:
Decimal: 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 kenyataannya 012.345 . Juga perhatikan bagaimana dikemas BCD lebih efisien dalam penggunaan penyimpanan dibandingkan dengan BCD terkompresi; pengkodean nomor yang sama dalam format terkompresi akan mengkonsumsi 100 persen lebih penyimpanan.
Pergeseran dan masking operasi yang digunakan untuk mengemas atau membongkar sebuah BCD digit dikemas. Lainnya operasi logis digunakan untuk mengkonversi angka ke pola bit setara atau membalikkan proses.
BCD di Electronics
BCD sangat umum dalam sistem elektronik dimana nilai numerik yang akan ditampilkan, terutama dalam sistem yang 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 sub-sirkuit tunggal yang terpisah. Ini cocok lebih erat realitas fisik dari layar hardware-desainer dapat 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 ke layar seperti ini memerlukan sirkuit yang kompleks. Oleh karena itu, dalam kasus di mana perhitungan relatif sederhana bekerja sepanjang 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, kode yang lebih kecil terjadi ketika mewakili angka internal dalam format BCD, karena konversi dari atau ke representasi biner bisa mahal pada prosesor terbatas tersebut. Untuk aplikasi ini, beberapa prosesor kecil fitur mode BCD aritmatika, yang membantu saat menulis rutinitas yang memanipulasi jumlah BCD.
Dikemas BCD
Dalam BCD Packed (atau hanya dikemas desimal ), masing-masing dua camilan tiap byte mewakili angka desimal. BCD dikemas telah digunakan setidaknya sejak tahun 1960-an dan dilaksanakan di semua mainframe IBM hardware sejak saat itu. Kebanyakan implementasi adalah big endian , yaitu dengan angka yang lebih signifikan dalam setengah bagian atas setiap byte, dan dengan byte paling kiri (yang berada di alamat memori terendah) yang berisi digit yang paling signifikan dari nilai desimal dikemas. Menggigit lebih rendah dari byte paling kanan biasanya digunakan sebagai bendera tanda, meskipun beberapa representasi unsigned kekurangan bendera tanda. Sebagai contoh, nilai 4-byte terdiri dari 8 camilan, dimana atas 7 camilan menyimpan digit nilai desimal 7 digit dan menggigit terendah menunjukkan tanda nilai integer desimal.
Nilai tanda Standard 1100 ( hex C) untuk positif (+) dan 1101 (D) untuk negatif (-). Konvensi ini berasal dari singkatan untuk istilah akuntansi (Kredit dan Debit), seperti yang dikemas desimal coding secara luas digunakan dalam sistem akuntansi. [ rujukan? ] tanda-tanda lainnya adalah diperbolehkan 1010 (A) dan 1110 (E) untuk positif dan 1011 (B) untuk negatif. Kebanyakan implementasi juga menyediakan nilai BCD ditandatangani dengan menggigit tanda 1111 (F). [ 3 ] [ 4 ] [ 5 ] ILE RPG menggunakan 1111 (F) untuk positif dan 1101 (D) untuk negatif. [ 6 ] Pada dikemas BCD, nomor 127 diwakili oleh 0001 0010 0111 1100 (127C) dan -127 diwakili oleh 0001 0010 0111 1101 (127D). Sistem Burroughs digunakan 1101 (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 Masuk Catatan
A 1 0 1 0 +
B 1 0 1 1 -
C 1 1 0 0 + Yang dipilih
D 1 1 0 1 - Yang dipilih
E 1 1 1 0 +
F 1 1 1 1 + Unsigned
Tidak peduli berapa banyak byte lebar sebuah kata adalah, selalu ada bahkan jumlah camilan karena setiap byte memiliki dua dari mereka. Oleh karena itu, kata n byte dapat berisi sampai (2 n digit) -1 desimal, yang selalu ganjil digit. Sebuah angka desimal dengan d digit membutuhkan ½ ( d +1) byte ruang penyimpanan.
Sebagai contoh, 4-byte (32-bit) kata dapat menahan tujuh digit desimal tanda plus, dan dapat mewakili nilai-nilai mulai dari ± 9.999.999. Dengan demikian jumlah -1234567 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 karakter string, byte pertama dari desimal dikemas - dengan dua digit paling signifikan - biasanya disimpan dalam alamat terendah dalam memori, independen dari endianness mesin.)
Sebaliknya, 4-byte biner melengkapi dua itu bilangan bulat dapat mewakili nilai-nilai dari -2147483648 ke 2147483647.
Sementara dikemas BCD tidak memanfaatkan secara optimal penyimpanan (sekitar 1 / 6 dari memori yang digunakan terbuang), konversi ke ASCII , EBCDIC , atau berbagai encoding dari Unicode masih sepele, karena tidak ada operasi aritmatika yang diperlukan. Persyaratan penyimpanan ekstra biasanya diimbangi dengan kebutuhan untuk akurasi dan kompatibilitas dengan kalkulator atau tangan perhitungan yang fixed-point aritmatika desimal menyediakan. Kemasan lebih padat dari BCD ada yang menghindari hukuman penyimpanan dan juga tidak perlu operasi aritmatika untuk konversi umum.
BCD dikemas didukung dalam COBOL bahasa pemrograman sebagai "COMPUTATIONAL-3" (perpanjangan IBM diadopsi oleh banyak vendor compiler lain) atau "DIKEMAS-DECIMAL" (bagian dari 1985 standar COBOL) tipe data. Selain IBM System / 360 dan mainframe kemudian kompatibel, dikemas BCD dilaksanakan di set instruksi asli asli VAX prosesor dari Digital Equipment Corporation dan merupakan format asli untuk Burroughs Korporasi garis Medium Sistem mainframe (turun dari tahun 1950 Electrodata 200 series).
Fixed-titik 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 tersirat di depan salah satu digit. Sebagai contoh, nilai dikemas desimal dikodekan dengan byte 12 34 56 7C merupakan fixed-point nilai +1,234.567 ketika titik desimal tersirat terletak antara 4 dan 5 digit:
12 34 56 7C
12 34.56 7 +
Titik desimal tidak benar-benar disimpan dalam memori, seperti format penyimpanan BCD dikemas tidak menyediakan untuk itu. Lokasinya hanya dikenal compiler dan kode yang dihasilkan bertindak sesuai untuk berbagai operasi aritmatika.
Pengkodean yang lebih tinggi-density
Jika digit desimal memerlukan empat bit, maka tiga digit desimal memerlukan 12 bit. Namun, sejak 2 10 (1024) lebih besar dari 10 3 (1.000), jika tiga digit desimal dikodekan bersama-sama, hanya 10 bit yang diperlukan. Dua pengkodean seperti Chen-Ho encoding dan Decimal Padat Packed . Yang terakhir memiliki keuntungan bahwa himpunan bagian dari encoding encode dua digit dalam optimal tujuh bit dan satu angka di empat bit, seperti dalam BCD biasa.
Dikategorikan desimal
Beberapa implementasi, misalnya IBM sistem mainframe, mendukung dikategorikan desimal representasi numerik. Setiap digit desimal disimpan dalam satu byte, dengan rendah empat bit encoding digit dalam bentuk BCD. Bagian atas empat 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 ke F9 (hex), yang merupakan EBCDIC kode untuk karakter "0" melalui "9". Demikian pula, ASCII sistem menggunakan nilai zona 0011 (hex 3), memberikan kode karakter 30-39 (hex).
Untuk menandatangani nilai desimal dikategorikan, yang paling kanan (paling signifikan) menggigit zona memegang digit tanda, yang merupakan set yang sama nilai-nilai yang digunakan untuk menandatangani nomor dikemas desimal (lihat di atas). Dengan demikian nilai desimal dikategorikan dikodekan sebagai hex byte F1 F2 D3 mewakili menandatangani nilai desimal -123:
F1 F2 D3
1 2 -3
EBCDIC dikategorikan tabel konversi desimal
BCD Digit Heksadesimal Karakter EBCDIC
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 Saya 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 bervariasi tergantung pada karakter lokal halaman kode pengaturan.
Fixed-titik desimal dikategorikan
Beberapa bahasa (seperti COBOL dan PL / I ) secara langsung mendukung fixed-point dikategorikan nilai desimal, menetapkan titik desimal implisit di beberapa lokasi antara angka desimal nomor. Misalnya, diberi nilai desimal dikategorikan enam-byte ditandatangani dengan titik desimal tersirat di sebelah kanan digit keempat, hex byte 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 (karakter encoding)
IBM menggunakan istilah kode-biner desimal dan BCD untuk 6-bit alfanumerik kode yang mewakili angka, huruf besar dan karakter khusus. Beberapa variasi BCD alphamerics digunakan di sebagian besar awal komputer IBM, termasuk IBM 1620 , IBM 1400 seri , dan non Decimal Arsitektur anggota IBM 700/7000 series .
The IBM 1400 seri adalah karakter-addressable mesin, masing-masing lokasi yang menjadi enam bit berlabel B, A, 8, 4, 2 dan 1, ditambah aneh cek paritas bit ( C ) dan sedikit tanda kata ( M ). Untuk digit pengkodean 1 sampai 9 , B dan A adalah nol dan nilai digit diwakili oleh standar 4-bit BCD dalam bit 8 sampai 1 . Bagi sebagian besar karakter lain bit B dan A berasal hanya dari "12", "11", dan "0" "pukulan zona" dalam kode karakter kartu menekan, dan bit 8 sampai 1 dari 1 sampai 9 pukulan. A "12 zona" Punch Set kedua B dan A , sebuah "11 zona" set B , dan "0 zona" (0 pukulan digabungkan dengan orang lain) mengatur A . Jadi huruf A , yang (12,1) dalam format kartu menekan, dikodekan (B, A, 1) . Simbol mata uang $ , (11,8,3) dalam kartu menekan, dikodekan dalam memori sebagai (B, 8,2,1) . Hal ini memungkinkan sirkuit untuk mengkonversi antara format yang kartu menekan 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 inti. [ 7 ]
Memori dari IBM 1620 ini diselenggarakan dalam 6-bit addressable digit, biasa 8, 4, 2, 1 ditambah F , digunakan sebagai bit bendera dan C , aneh cek paritas bit. BCD alphamerics yang dikodekan menggunakan pasangan digit, dengan "zona" di digit bahkan-ditangani dan "digit" pada digit ganjil ditangani, "zona" yang terkait dengan 12 , 11 , dan 0 "pukulan zona" sebagai dalam seri 1400. Input / Output hardware terjemahan dikonversi antara pasangan digit internal dan standar eksternal 6-bit kode BCD.
Dalam Decimal Arsitektur IBM 7070 , IBM 7072 , dan IBM 7074 alphamerics yang dikodekan menggunakan pasangan digit (menggunakan dua-out-of-lima kode dalam angka, bukan BCD) dari kata 10-digit, dengan "zona" di digit kiri dan "digit" pada digit yang tepat. Input / Output hardware terjemahan dikonversi antara pasangan digit internal dan standar eksternal 6-bit kode BCD.
Dengan diperkenalkannya System / 360 , IBM memperluas 6-bit BCD alphamerics untuk 8-bit EBCDIC , memungkinkan penambahan lebih banyak karakter (misalnya, huruf kecil). Sebuah variabel panjang Dikemas BCD numerik tipe data juga dilaksanakan, memberikan instruksi mesin yang melakukan aritmatika langsung pada data dikemas desimal.
Pada IBM 1130 dan 1800 , dikemas BCD didukung dalam perangkat lunak oleh IBM Komersial Subroutine Package.
Saat ini, data BCD 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), BCD Packed (dua digit desimal per byte ), atau "murni" BCD encoding (satu digit desimal disimpan sebagai BCD di rendah empat bit dari setiap byte) . Semua ini digunakan dalam register hardware dan unit pengolahan, dan perangkat lunak. Untuk mengkonversi desimal dikemas dalam tabel EBCDIC membongkar untuk bisa dibaca angka, Anda dapat menggunakan OUTREC BIDANG topeng dari JCL utilitas DFSORT. [ 8 ]
Komputer lain dan BCD
The Digital Equipment Corporation VAX-11 seri termasuk instruksi yang dapat melakukan aritmatika langsung pada data dikemas BCD dan mengkonversi antara data BCD dikemas dan representasi bilangan bulat lainnya. [ 5 ] Format BCD dikemas The VAX adalah kompatibel dengan IBM System / 360 dan IBM kemudian prosesor kompatibel. The MicroVAX dan kemudian VAX implementasi menjatuhkan kemampuan ini dari CPU tetapi tetap kode kompatibilitas dengan mesin sebelumnya dengan menerapkan petunjuk yang hilang dalam perpustakaan software sistem operasi yang disediakan. Hal ini dipanggil secara otomatis melalui penanganan pengecualian ketika instruksi tidak lagi diterapkan ditemui, sehingga program menggunakan mereka bisa menjalankan tanpa modifikasi pada mesin-mesin baru.
The Intel x86 arsitektur ditemukan pada Intel sistem 32-bit mendukung 18-digit (sepuluh byte) Format BCD unik yang dapat dimuat ke dan disimpan dari register floating point, dan perhitungan dapat dilakukan di sana.
Pada komputer yang lebih baru kemampuan tersebut hampir selalu diimplementasikan dalam perangkat lunak daripada set instruksi CPU, tetapi data numerik BCD masih sangat umum dalam aplikasi komersial dan keuangan.
Selain dengan BCD
Hal ini dimungkinkan untuk melakukan penambahan dalam BCD dengan terlebih dahulu menambahkan dalam biner, dan kemudian mengubah ke BCD sesudahnya. Konversi dari jumlah sederhana dari dua digit bisa dilakukan dengan menambahkan 6 (yaitu, 16-10) pada saat keputusan lima-bit menambahkan sepasang digit memiliki nilai lebih besar dari 9. Sebagai contoh:
1001 + 1000 = 10001
9 + 8 = 17
Perhatikan bahwa 10001 adalah biner, desimal tidak, representasi dari hasil yang diinginkan. Dalam BCD seperti dalam desimal, ada tidak bisa ada nilai lebih besar dari 9 (1.001) 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 = 23 1 7
Kedua camilan hasilnya, 0001 dan 0111, sesuai dengan angka "1" dan "7". Ini menghasilkan "17" di BCD, yang merupakan hasil yang benar.
Teknik ini dapat diperluas untuk menambahkan beberapa digit dengan menambahkan dalam kelompok dari kanan ke kiri, menyebarkan digit kedua sebagai membawa, selalu membandingkan hasil 5-bit dari setiap digit-pasangan sum untuk 9. Beberapa CPU menyediakan bendera setengah carry untuk memfasilitasi penyesuaian BCD aritmatika berikut penambahan biner dan operasi pengurangan.
Pengurangan dengan BCD
Pengurangan ini dilakukan dengan menambahkan komplemen sepuluh murah dari pengurang . Untuk mewakili tanda nomor dalam BCD, jumlah 0000 digunakan untuk mewakili angka positif , dan 1001 digunakan untuk mewakili angka negatif . Sisanya 14 kombinasi tanda-tanda yang tidak valid. Untuk menggambarkan menandatangani BCD pengurangan, pertimbangkan masalah berikut: 357-432.
Dalam ditandatangani BCD, 357 adalah 0000 0011 0101 0111. The komplemen sepuluh ini dari 432 dapat diperoleh dengan mengambil sembilan komplemen dari 432, dan kemudian menambahkan satu. Jadi, 999-432 = 567, dan 567 + 1 = 568. Dengan sebelumnya 568 di BCD oleh kode tanda negatif, jumlah -432 dapat diwakili. Jadi, -432 dalam ditandatangani BCD adalah 1001 0101 0110 1000.
Sekarang kedua angka terwakili dalam menandatangani BCD, mereka dapat ditambahkan bersama-sama:
0000 0011 0101 0111
0 3 5 7
+ 1001 0101 0110 1000
9 5 6 8
= 1001 1000 1011 1111
9 8 11 15
Karena BCD adalah suatu bentuk representasi desimal, beberapa digit jumlah di atas tidak valid. Dalam hal entri yang tidak valid (setiap BCD digit lebih besar dari 1001) ada, 6 ditambahkan untuk menghasilkan carry bit dan menyebabkan jumlah untuk menjadi entri yang valid. Alasan untuk menambahkan 6 adalah bahwa ada 16 kemungkinan nilai BCD 4-bit (sejak 2 4 = 16), tetapi hanya 10 nilai yang berlaku (0000 sampai 1001). Jadi menambahkan 6 ke valid hasil entri sebagai berikut:
1001 1000 1011 1111
9 8 11 15
+ 0000 0000 0110 0110
0 0 6 6
= 1001 1001 0010 0101
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. Ini tampaknya benar, karena 357-432 harus menghasilkan angka negatif. Untuk memeriksa sisa digit, mewakili mereka dalam desimal. 1001 0010 0101 adalah 925. di sepuluh komplemen dari 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), jumlah dengan jumlah paling sedikit dari angka pertama harus diisi dengan angka nol sebelum mengambil komplemen sepuluh itu atau mengurangi. Jadi, dengan 1053 - 122, 122 harus terlebih dahulu direpresentasikan sebagai 0122, dan komplemen sepuluh murah dari 0122 harus dihitung.
Latar Belakang
Skema desimal kode-biner yang dijelaskan dalam artikel ini adalah pengkodean yang paling umum, tetapi ada banyak orang lain. Metode di sini dapat disebut sebagai Simple Binary-Coded Decimal ( SBCD ) atau BCD 8421 . Dalam header ke meja, '8 4 2 1', dll , menunjukkan berat masing-masing bit ditampilkan; dicatat bahwa pada kolom kelima dua bobot negatif. Kedua kode ASCII dan karakter EBCDIC untuk digit adalah contoh dikategorikan BCD, dan juga ditampilkan dalam tabel.
Tabel berikut merupakan desimal digit dari 0 sampai 9 di berbagai sistem BCD:
Digit BCD
8 4 2 1 Kelebihan-3
atau Stibitz Kode BCD 2 4 2 1
atau Aiken Kode BCD
8 4 -2 -1 IBM 702 IBM 705
IBM 7080 IBM 1401
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
Sejarah hukum
Dalam 1972 kasus Gottschalk v. Benson , Mahkamah Agung AS membatalkan keputusan pengadilan yang lebih rendah yang telah membiarkan paten untuk mengubah nomor BCD disandikan ke biner pada komputer. Ini adalah kasus penting dalam menentukan paten perangkat lunak dan algoritma.
Perbandingan dengan murni biner
Keuntungan
Banyak nilai-nilai non-integral, seperti desimal 0,2, memiliki representasi tempat-nilai tak terbatas dalam biner (,001100110011 ...) tapi memiliki tempat-nilai terbatas dalam kode-biner desimal (0,0010). Akibatnya sistem yang didasarkan pada representasi desimal kode-biner pecahan desimal menghindari kesalahan yang mewakili dan menghitung nilai-nilai tersebut.
Scaling dengan faktor 10 (atau kekuatan 10) sederhana; ini berguna ketika faktor skala desimal diperlukan untuk mewakili kuantitas non-bilangan bulat (misalnya, dalam perhitungan keuangan)
Pembulatan pada batas digit desimal lebih 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 display (misalnya, ke format berbasis teks seperti XML , atau untuk mendorong sinyal untuk tampilan tujuh-segmen ) adalah sederhana pemetaan per-digit, dan dapat dilakukan dalam linear ( O ( n )) waktu. Konversi dari murni biner melibatkan logika relatif kompleks yang mencakup digit, dan untuk jumlah besar tidak ada algoritma konversi linear-waktu dikenal (lihat sistem angka biner ).
Kekurangan
Beberapa operasi yang lebih kompleks untuk diimplementasikan. Adders membutuhkan logika ekstra untuk membuat mereka untuk membungkus dan menghasilkan carry awal. 15-20 persen lebih banyak sirkuit yang diperlukan untuk BCD add dibandingkan dengan biner murni. [ rujukan? ] Perkalian memerlukan penggunaan algoritma yang agak lebih kompleks daripada pergeseran-mask-add (a perkalian biner , membutuhkan pergeseran biner dan menambahkan atau setara , per-digit atau kelompok digit diperlukan)
Standar BCD memerlukan empat bit per digit, sekitar 20 persen lebih banyak ruang daripada pengkodean biner (rasio 4 bit untuk log 2 10 bit adalah 1,204). Ketika dikemas sehingga tiga digit dikodekan dalam sepuluh bit, overhead penyimpanan sangat berkurang, dengan mengorbankan encoding yang unaligned dengan batas-batas byte 8-bit 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
The BIOS di banyak komputer pribadi menyimpan tanggal dan waktu di BCD karena MC6818 real-time clock chip yang digunakan dalam asli IBM PC AT motherboard tersedia waktu dikodekan dalam BCD. Formulir ini mudah diubah menjadi ASCII untuk ditampilkan. [ 9 ]
The Atari 8-bit keluarga dari komputer yang digunakan BCD untuk menerapkan algoritma floating-point. The MOS 6502 prosesor yang digunakan memiliki modus BCD yang mempengaruhi penambahan dan pengurangan instruksi.
Model awal dari PlayStation 3 toko tanggal dan waktu dalam BCD. Hal ini menyebabkan pemadaman di seluruh dunia konsol pada tanggal 1 Maret 2010 Dua digit terakhir dari tahun disimpan sebagai BCD itu disalahartikan sebagai 16 menyebabkan kesalahan dalam tanggal unit, rendering sebagian besar fungsi bisa dioperasi. Ini telah disebut sebagai Tahun 2010 Masalah .
Variasi Representasi
Berbagai implementasi BCD ada yang mempekerjakan representasi lainnya untuk angka. kalkulator Programmable diproduksi oleh Texas Instruments , Hewlett-Packard , dan lain-lain biasanya mempekerjakan floating-point format yang BCD, biasanya dengan dua atau tiga digit untuk (desimal) eksponen. Bit tambahan digit tanda dapat digunakan untuk menunjukkan nilai-nilai khusus numerik, seperti infinity , underflow / meluap , dan kesalahan (layar berkedip).
Variasi Signed
Nilai desimal ditandatangani dapat diwakili dalam beberapa cara. The COBOL bahasa pemrograman, misalnya, mendukung total lima format desimal dikategorikan, masing-masing pengkodean tanda numerik dengan cara yang berbeda:
Jenis Deskripsi Contoh
Unsigned Ada tanda-tanda menggigit F1 F2 F 3
Ditandatangani Trailing (format kanonik) Masuk menggigit dalam terakhir (paling signifikan) byte F1 F2 C 3
Ditandatangani terkemuka (overpunch) Masuk menggigit di pertama (paling signifikan) byte C 1 F2 F3
Ditandatangani tertinggal terpisah Karakter tanda terpisah byte ( '+' atau '-' ) mengikuti bytes digit F1 F2 F3 2B
Ditandatangani terkemuka terpisah Karakter tanda terpisah byte ( '+' atau '-' ) sebelum bytes digit 2B F1 F2 F3
Telephony Binary Coded Decimal (TBCD)
3GPP mengembangkan TBCD , [ 10 ] ekspansi ke BCD mana sisa (tidak terpakai) kombinasi bit yang digunakan untuk menambahkan khusus telepon karakter, [ 11 ] [ 12 ] dengan angka yang sama dengan yang ditemukan di keypad telepon desain asli. Hal ini kompatibel dengan BCD.
Decimal
Digit TBCD
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
Digunakan sebagai pengisi ketika ada ganjil digit 1 1 1 1
Pengkodean Alternatif
Jika kesalahan dalam representasi dan komputasi lebih penting daripada kecepatan konversi ke dan dari tampilan, representasi biner skala dapat digunakan, yang menyimpan angka desimal sebagai bilangan bulat biner-encoded dan eksponen desimal biner-encoded ditandatangani. Sebagai contoh, 0,2 dapat direpresentasikan sebagai 2 × 10 -1 .
Sumber :http://en.m.wikipedia.org/wiki/Binary-coded_decimal
Tidak ada komentar:
Posting Komentar