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 |
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
Subscribe to:
Posts (Atom)
Kelebihan dan Kelemahan AHP
Kelebihan dan Kelemahan AHP Layaknya sebuah metode analisis, AHP pun memiliki kelebihan dan kelemahan dalam system analisisnya. Keleb...
-
Sistem pendukung keputusan Metode AHP Sistem pendukung keputusan( Inggris : decision support systems disingkat DSS ) adalah bagian da...
-
Kelebihan dan Kelemahan AHP Layaknya sebuah metode analisis, AHP pun memiliki kelebihan dan kelemahan dalam system analisisnya. Keleb...
-
Sistem Pendukung keputusan adalah/ Sistem Pendukung keputusan yaitu/ Sistem Pendukung keputusan merupakan/ yang dimaksud Sistem Pendukung...