Manusia menggunakan sistem angka desimal (basis 10) dan duodesimal (basis 12) untuk menghitung dan mengukur (mungkin karena kita memiliki 10 jari tangan dan dua jempol kaki). Komputer menggunakan sistem bilangan biner (basis 2), karena dibuat dari komponen digital biner (dikenal sebagai transistor) yang beroperasi di dua keadaan - hidup dan mati. Dalam komputasi, kami juga menggunakan sistem bilangan heksadesimal (basis 16) atau oktal (basis 8), sebagai bentuk ringkas untuk merepresentasikan bilangan biner
Desimal (Basis 10) Sistem Bilangan
Sistem bilangan desimal memiliki sepuluh simbol.
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
5,
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
6,
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
7,
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
8,
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
9,
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
0,
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
1,
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
2,
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
3, dan ________5______4, disebut digit. Ini menggunakan notasi posisi. Artinya, digit paling tidak penting (digit paling kanan) adalah urutan
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
5 (satuan atau satuan), digit paling kanan kedua adalah urutan
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
6 (puluhan), digit paling kanan ketiga adalah dari . Misalnya,
735 = 700 + 30 + 5 = 7×10^2 + 3×10^1 + 5×10^0
Kami akan menunjukkan angka desimal dengan akhiran opsional
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
9 jika timbul ambiguitas
Sistem Bilangan Biner (Base 2).
Sistem bilangan biner memiliki dua simbol.
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
5 dan
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
6, disebut bit. Ini juga merupakan notasi posisi, misalnya,
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
Kami akan menunjukkan angka biner dengan akhiran
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
2. Beberapa bahasa pemrograman menunjukkan bilangan biner dengan awalan
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
3 atau
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
4 (e. g. ,
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
_5), atau awalan
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
6 dengan kutipan bit (e. g. ,
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
_7)
Digit biner disebut bit. Delapan bit disebut byte (mengapa unit 8-bit? Mungkin karena
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
8)
Sistem Bilangan Heksadesimal (Basis 16).
Sistem bilangan heksadesimal menggunakan 16 simbol.
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
5,
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
6,
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
7,
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
8,
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
9,
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
0,
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
1,
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
2,
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
3,
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
4,
dn-1×rn-1 + dn-2×rn-2 + .. + d1×r1 + d0×r0
9,
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
2,
A1C2H = 10×16^3 + 1×16^2 + 12×16^1 + 2 = 41410 (base 10)
10110B = 1×2^4 + 1×2^2 + 1×2^1 = 22 (base 10)
1,
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
9,
A1C2H = 10×16^3 + 1×16^2 + 12×16^1 + 2 = 41410 (base 10)
10110B = 1×2^4 + 1×2^2 + 1×2^1 = 22 (base 10)
3, and
A1C2H = 10×16^3 + 1×16^2 + 12×16^1 + 2 = 41410 (base 10)
10110B = 1×2^4 + 1×2^2 + 1×2^1 = 22 (base 10)
4, called hex digits. Ini adalah notasi posisi, misalnya,
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
Kami akan menunjukkan angka heksadesimal (singkatnya, hex) dengan akhiran
A1C2H = 10×16^3 + 1×16^2 + 12×16^1 + 2 = 41410 (base 10)
10110B = 1×2^4 + 1×2^2 + 1×2^1 = 22 (base 10)
5. Beberapa bahasa pemrograman menunjukkan angka hex dengan awalan
A1C2H = 10×16^3 + 1×16^2 + 12×16^1 + 2 = 41410 (base 10)
10110B = 1×2^4 + 1×2^2 + 1×2^1 = 22 (base 10)
6 atau
A1C2H = 10×16^3 + 1×16^2 + 12×16^1 + 2 = 41410 (base 10)
10110B = 1×2^4 + 1×2^2 + 1×2^1 = 22 (base 10)
7 (e. g. ,
A1C2H = 10×16^3 + 1×16^2 + 12×16^1 + 2 = 41410 (base 10)
10110B = 1×2^4 + 1×2^2 + 1×2^1 = 22 (base 10)
_8), atau awalan
A1C2H = 10×16^3 + 1×16^2 + 12×16^1 + 2 = 41410 (base 10)
10110B = 1×2^4 + 1×2^2 + 1×2^1 = 22 (base 10)
9 dengan digit hex dikutip (e. g. ,
To convert 261(base 10) to hexadecimal:
261/16 => quotient=16 remainder=5
16/16 => quotient=1 remainder=0
1/16 => quotient=0 remainder=1 (quotient=0 stop)
Hence, 261D = 105H (Collect the hex digits from the remainder in reverse order)
_0)
Setiap digit heksadesimal juga disebut digit hex. Sebagian besar bahasa pemrograman menerima huruf kecil
To convert 261(base 10) to hexadecimal:
261/16 => quotient=16 remainder=5
16/16 => quotient=1 remainder=0
1/16 => quotient=0 remainder=1 (quotient=0 stop)
Hence, 261D = 105H (Collect the hex digits from the remainder in reverse order)
1 hingga
To convert 261(base 10) to hexadecimal:
261/16 => quotient=16 remainder=5
16/16 => quotient=1 remainder=0
1/16 => quotient=0 remainder=1 (quotient=0 stop)
Hence, 261D = 105H (Collect the hex digits from the remainder in reverse order)
2 serta huruf besar
To convert 261(base 10) to hexadecimal:
261/16 => quotient=16 remainder=5
16/16 => quotient=1 remainder=0
1/16 => quotient=0 remainder=1 (quotient=0 stop)
Hence, 261D = 105H (Collect the hex digits from the remainder in reverse order)
3 hingga
To convert 261(base 10) to hexadecimal:
261/16 => quotient=16 remainder=5
16/16 => quotient=1 remainder=0
1/16 => quotient=0 remainder=1 (quotient=0 stop)
Hence, 261D = 105H (Collect the hex digits from the remainder in reverse order)
4
Komputer menggunakan sistem biner dalam operasi internalnya, karena dibangun dari komponen elektronik digital biner dengan 2 status - hidup dan mati. Namun, menulis atau membaca urutan bit biner yang panjang tidak praktis dan rawan kesalahan (coba baca string biner ini.
To convert 261(base 10) to hexadecimal:
261/16 => quotient=16 remainder=5
16/16 => quotient=1 remainder=0
1/16 => quotient=0 remainder=1 (quotient=0 stop)
Hence, 261D = 105H (Collect the hex digits from the remainder in reverse order)
_5, yang sama dengan heksadesimal
To convert 261(base 10) to hexadecimal:
261/16 => quotient=16 remainder=5
16/16 => quotient=1 remainder=0
1/16 => quotient=0 remainder=1 (quotient=0 stop)
Hence, 261D = 105H (Collect the hex digits from the remainder in reverse order)
6). Sistem heksadesimal digunakan sebagai bentuk kompak atau singkatan untuk bit biner. Setiap digit hex setara dengan 4 bit biner, i. e. , singkatan untuk 4 bit, sebagai berikutHexadecimalBinaryDecimal000000100011200102300113401004501015601106701117810008910019A101010B101111C110012D110113E111014F111115
Konversi dari Heksadesimal ke Biner
Ganti setiap digit hex dengan 4 bit ekuivalen (seperti yang tercantum dalam tabel di atas), misalnya,
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
Konversi dari Biner ke Heksadesimal
Mulai dari bit paling kanan (least-significant bit), ganti setiap kelompok 4 bit dengan digit hex yang setara (padi bit paling kiri dengan nol jika perlu), misalnya,
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
Penting untuk dicatat bahwa bilangan heksadesimal menyediakan bentuk yang ringkas atau singkatan untuk merepresentasikan bit biner
Konversi dari Basis To convert 261(base 10) to hexadecimal:
261/16 => quotient=16 remainder=5
16/16 => quotient=1 remainder=0
1/16 => quotient=0 remainder=1 (quotient=0 stop)
Hence, 261D = 105H (Collect the hex digits from the remainder in reverse order)
7 ke Desimal (Basis 10)
Diberi bilangan dasar n-digit r.
To convert 261(base 10) to hexadecimal:
261/16 => quotient=16 remainder=5
16/16 => quotient=1 remainder=0
1/16 => quotient=0 remainder=1 (quotient=0 stop)
Hence, 261D = 105H (Collect the hex digits from the remainder in reverse order)
8 (basis r), padanan desimalnya diberikan oleh
dn-1×rn-1 + dn-2×rn-2 + .. + d1×r1 + d0×r0
Sebagai contoh,
A1C2H = 10×16^3 + 1×16^2 + 12×16^1 + 2 = 41410 (base 10)
10110B = 1×2^4 + 1×2^2 + 1×2^1 = 22 (base 10)
Konversi dari Desimal (Basis 10) ke Basis To convert 261(base 10) to hexadecimal:
261/16 => quotient=16 remainder=5
16/16 => quotient=1 remainder=0
1/16 => quotient=0 remainder=1 (quotient=0 stop)
Hence, 261D = 105H (Collect the hex digits from the remainder in reverse order)
7
Gunakan pembagian/sisa berulang. Sebagai contoh,
To convert 261(base 10) to hexadecimal:
261/16 => quotient=16 remainder=5
16/16 => quotient=1 remainder=0
1/16 => quotient=0 remainder=1 (quotient=0 stop)
Hence, 261D = 105H (Collect the hex digits from the remainder in reverse order)
Prosedur di atas sebenarnya berlaku untuk konversi antara 2 sistem dasar. Misalnya,
To convert 1023(base 4) to base 3:
1023(base 4)/3 => quotient=25D remainder=0
25D/3 => quotient=8D remainder=1
8D/3 => quotient=2D remainder=2
2D/3 => quotient=0 remainder=2 (quotient=0 stop)
Hence, 1023(base 4) = 2210(base 3)
Konversi antara Sistem Dua Bilangan dengan Bagian Pecahan
- Pisahkan bagian integral dan pecahan
- Untuk bagian integral, bagi dengan radix target secara berulang, dan kumpulkan ramander dalam urutan terbalik
- Untuk bagian pecahan, gandakan bagian pecahan dengan radix target secara berulang, dan kumpulkan bagian integral dalam urutan yang sama
Contoh 1. Desimal ke Biner
Convert 18.6875D to binary
Integral Part = 18D
18/2 => quotient=9 remainder=0
9/2 => quotient=4 remainder=1
4/2 => quotient=2 remainder=0
2/2 => quotient=1 remainder=0
1/2 => quotient=0 remainder=1 (quotient=0 stop)
Hence, 18D = 10010B
Fractional Part = .6875D
.6875*2=1.375 => whole number is 1
.375*2=0.75 => whole number is 0
.75*2=1.5 => whole number is 1
.5*2=1.0 => whole number is 1
Hence .6875D = .1011B
Combine, 18.6875D = 10010.1011B
Contoh 2. Desimal ke Heksadesimal
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_0
Latihan (Konversi Sistem Bilangan)
- Ubahlah bilangan desimal berikut menjadi bilangan biner dan heksadesimal
- Ubahlah bilangan biner berikut menjadi bilangan heksadesimal dan desimal
To convert 1023(base 4) to base 3:
1023(base 4)/3 => quotient=25D remainder=0
25D/3 => quotient=8D remainder=1
8D/3 => quotient=2D remainder=2
2D/3 => quotient=0 remainder=2 (quotient=0 stop)
Hence, 1023(base 4) = 2210(base 3)
0To convert 1023(base 4) to base 3:
1023(base 4)/3 => quotient=25D remainder=0
25D/3 => quotient=8D remainder=1
8D/3 => quotient=2D remainder=2
2D/3 => quotient=0 remainder=2 (quotient=0 stop)
Hence, 1023(base 4) = 2210(base 3)
1To convert 1023(base 4) to base 3:
1023(base 4)/3 => quotient=25D remainder=0
25D/3 => quotient=8D remainder=1
8D/3 => quotient=2D remainder=2
2D/3 => quotient=0 remainder=2 (quotient=0 stop)
Hence, 1023(base 4) = 2210(base 3)
2
- Ubahlah bilangan heksadesimal berikut menjadi bilangan biner dan desimal
- Ubahlah bilangan desimal berikut ini menjadi ekivalen biner
Jawaban. Anda dapat menggunakan Kalkulator Windows (
To convert 1023(base 4) to base 3:
1023(base 4)/3 => quotient=25D remainder=0
25D/3 => quotient=8D remainder=1
8D/3 => quotient=2D remainder=2
2D/3 => quotient=0 remainder=2 (quotient=0 stop)
Hence, 1023(base 4) = 2210(base 3)
_3) untuk melakukan konversi sistem bilangan, dengan mengaturnya ke Programmer atau mode ilmiah. (Jalankan "calc" ⇒ Pilih menu "Pengaturan" ⇒ Pilih mode "Programmer" atau "Ilmiah". )
To convert 1023(base 4) to base 3:
1023(base 4)/3 => quotient=25D remainder=0
25D/3 => quotient=8D remainder=1
8D/3 => quotient=2D remainder=2
2D/3 => quotient=0 remainder=2 (quotient=0 stop)
Hence, 1023(base 4) = 2210(base 3)
4, To convert 1023(base 4) to base 3:
1023(base 4)/3 => quotient=25D remainder=0
25D/3 => quotient=8D remainder=1
8D/3 => quotient=2D remainder=2
2D/3 => quotient=0 remainder=2 (quotient=0 stop)
Hence, 1023(base 4) = 2210(base 3)
5, To convert 1023(base 4) to base 3:
1023(base 4)/3 => quotient=25D remainder=0
25D/3 => quotient=8D remainder=1
8D/3 => quotient=2D remainder=2
2D/3 => quotient=0 remainder=2 (quotient=0 stop)
Hence, 1023(base 4) = 2210(base 3)
6, To convert 1023(base 4) to base 3:
1023(base 4)/3 => quotient=25D remainder=0
25D/3 => quotient=8D remainder=1
8D/3 => quotient=2D remainder=2
2D/3 => quotient=0 remainder=2 (quotient=0 stop)
Hence, 1023(base 4) = 2210(base 3)
7, To convert 1023(base 4) to base 3:
1023(base 4)/3 => quotient=25D remainder=0
25D/3 => quotient=8D remainder=1
8D/3 => quotient=2D remainder=2
2D/3 => quotient=0 remainder=2 (quotient=0 stop)
Hence, 1023(base 4) = 2210(base 3)
8, To convert 1023(base 4) to base 3:
1023(base 4)/3 => quotient=25D remainder=0
25D/3 => quotient=8D remainder=1
8D/3 => quotient=2D remainder=2
2D/3 => quotient=0 remainder=2 (quotient=0 stop)
Hence, 1023(base 4) = 2210(base 3)
9Convert 18.6875D to binary
Integral Part = 18D
18/2 => quotient=9 remainder=0
9/2 => quotient=4 remainder=1
4/2 => quotient=2 remainder=0
2/2 => quotient=1 remainder=0
1/2 => quotient=0 remainder=1 (quotient=0 stop)
Hence, 18D = 10010B
Fractional Part = .6875D
.6875*2=1.375 => whole number is 1
.375*2=0.75 => whole number is 0
.75*2=1.5 => whole number is 1
.5*2=1.0 => whole number is 1
Hence .6875D = .1011B
Combine, 18.6875D = 10010.1011B
0, Convert 18.6875D to binary
Integral Part = 18D
18/2 => quotient=9 remainder=0
9/2 => quotient=4 remainder=1
4/2 => quotient=2 remainder=0
2/2 => quotient=1 remainder=0
1/2 => quotient=0 remainder=1 (quotient=0 stop)
Hence, 18D = 10010B
Fractional Part = .6875D
.6875*2=1.375 => whole number is 1
.375*2=0.75 => whole number is 0
.75*2=1.5 => whole number is 1
.5*2=1.0 => whole number is 1
Hence .6875D = .1011B
Combine, 18.6875D = 10010.1011B
1, Convert 18.6875D to binary
Integral Part = 18D
18/2 => quotient=9 remainder=0
9/2 => quotient=4 remainder=1
4/2 => quotient=2 remainder=0
2/2 => quotient=1 remainder=0
1/2 => quotient=0 remainder=1 (quotient=0 stop)
Hence, 18D = 10010B
Fractional Part = .6875D
.6875*2=1.375 => whole number is 1
.375*2=0.75 => whole number is 0
.75*2=1.5 => whole number is 1
.5*2=1.0 => whole number is 1
Hence .6875D = .1011B
Combine, 18.6875D = 10010.1011B
2, Convert 18.6875D to binary
Integral Part = 18D
18/2 => quotient=9 remainder=0
9/2 => quotient=4 remainder=1
4/2 => quotient=2 remainder=0
2/2 => quotient=1 remainder=0
1/2 => quotient=0 remainder=1 (quotient=0 stop)
Hence, 18D = 10010B
Fractional Part = .6875D
.6875*2=1.375 => whole number is 1
.375*2=0.75 => whole number is 0
.75*2=1.5 => whole number is 1
.5*2=1.0 => whole number is 1
Hence .6875D = .1011B
Combine, 18.6875D = 10010.1011B
3, Convert 18.6875D to binary
Integral Part = 18D
18/2 => quotient=9 remainder=0
9/2 => quotient=4 remainder=1
4/2 => quotient=2 remainder=0
2/2 => quotient=1 remainder=0
1/2 => quotient=0 remainder=1 (quotient=0 stop)
Hence, 18D = 10010B
Fractional Part = .6875D
.6875*2=1.375 => whole number is 1
.375*2=0.75 => whole number is 0
.75*2=1.5 => whole number is 1
.5*2=1.0 => whole number is 1
Hence .6875D = .1011B
Combine, 18.6875D = 10010.1011B
4, Convert 18.6875D to binary
Integral Part = 18D
18/2 => quotient=9 remainder=0
9/2 => quotient=4 remainder=1
4/2 => quotient=2 remainder=0
2/2 => quotient=1 remainder=0
1/2 => quotient=0 remainder=1 (quotient=0 stop)
Hence, 18D = 10010B
Fractional Part = .6875D
.6875*2=1.375 => whole number is 1
.375*2=0.75 => whole number is 0
.75*2=1.5 => whole number is 1
.5*2=1.0 => whole number is 1
Hence .6875D = .1011B
Combine, 18.6875D = 10010.1011B
5Convert 18.6875D to binary
Integral Part = 18D
18/2 => quotient=9 remainder=0
9/2 => quotient=4 remainder=1
4/2 => quotient=2 remainder=0
2/2 => quotient=1 remainder=0
1/2 => quotient=0 remainder=1 (quotient=0 stop)
Hence, 18D = 10010B
Fractional Part = .6875D
.6875*2=1.375 => whole number is 1
.375*2=0.75 => whole number is 0
.75*2=1.5 => whole number is 1
.5*2=1.0 => whole number is 1
Hence .6875D = .1011B
Combine, 18.6875D = 10010.1011B
6, Convert 18.6875D to binary
Integral Part = 18D
18/2 => quotient=9 remainder=0
9/2 => quotient=4 remainder=1
4/2 => quotient=2 remainder=0
2/2 => quotient=1 remainder=0
1/2 => quotient=0 remainder=1 (quotient=0 stop)
Hence, 18D = 10010B
Fractional Part = .6875D
.6875*2=1.375 => whole number is 1
.375*2=0.75 => whole number is 0
.75*2=1.5 => whole number is 1
.5*2=1.0 => whole number is 1
Hence .6875D = .1011B
Combine, 18.6875D = 10010.1011B
7, Convert 18.6875D to binary
Integral Part = 18D
18/2 => quotient=9 remainder=0
9/2 => quotient=4 remainder=1
4/2 => quotient=2 remainder=0
2/2 => quotient=1 remainder=0
1/2 => quotient=0 remainder=1 (quotient=0 stop)
Hence, 18D = 10010B
Fractional Part = .6875D
.6875*2=1.375 => whole number is 1
.375*2=0.75 => whole number is 0
.75*2=1.5 => whole number is 1
.5*2=1.0 => whole number is 1
Hence .6875D = .1011B
Combine, 18.6875D = 10010.1011B
8, Convert 18.6875D to binary
Integral Part = 18D
18/2 => quotient=9 remainder=0
9/2 => quotient=4 remainder=1
4/2 => quotient=2 remainder=0
2/2 => quotient=1 remainder=0
1/2 => quotient=0 remainder=1 (quotient=0 stop)
Hence, 18D = 10010B
Fractional Part = .6875D
.6875*2=1.375 => whole number is 1
.375*2=0.75 => whole number is 0
.75*2=1.5 => whole number is 1
.5*2=1.0 => whole number is 1
Hence .6875D = .1011B
Combine, 18.6875D = 10010.1011B
9, 10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
00, 10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
01- ?? . )
Memori Komputer & Representasi Data
Komputer menggunakan jumlah bit yang tetap untuk mewakili sepotong data, yang bisa berupa angka, karakter, atau lainnya. Lokasi penyimpanan n-bit dapat mewakili hingga
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
02 entitas yang berbeda. Misalnya, lokasi memori 3-bit dapat menampung salah satu dari delapan pola biner ini.
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_03,
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
04,
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
05,
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
06,
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
07,
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
08,
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
09, atau
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
10. Oleh karena itu, ini dapat mewakili paling banyak 8 entitas berbeda. Anda dapat menggunakannya untuk mewakili angka 0 hingga 7, angka 8881 hingga 8888, karakter 'A' hingga 'H', atau hingga 8 jenis buah-buahan seperti apel, jeruk, pisang;
Bilangan bulat, misalnya, dapat direpresentasikan dalam 8-bit, 16-bit, 32-bit atau 64-bit. Anda, sebagai pemrogram, memilih panjang bit yang sesuai untuk bilangan bulat Anda. Pilihan Anda akan memberlakukan batasan pada rentang bilangan bulat yang dapat direpresentasikan. Selain panjang bit, bilangan bulat dapat direpresentasikan dalam berbagai skema representasi, mis. g. , tidak ditandatangani vs. bilangan bulat yang ditandatangani. Bilangan bulat tidak bertanda 8-bit memiliki rentang 0 hingga 255, sedangkan bilangan bulat bertanda 8-bit memiliki rentang -128 hingga 127 - keduanya mewakili 256 angka berbeda
Penting untuk dicatat bahwa lokasi memori komputer hanya menyimpan pola biner. Ini sepenuhnya terserah Anda, sebagai pemrogram, untuk memutuskan bagaimana pola-pola ini akan ditafsirkan. Misalnya, pola biner 8-bit
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
11 dapat diartikan sebagai unsigned integer
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
12, atau karakter ASCII
To convert 261(base 10) to hexadecimal:
261/16 => quotient=16 remainder=5
16/16 => quotient=1 remainder=0
1/16 => quotient=0 remainder=1 (quotient=0 stop)
Hence, 261D = 105H (Collect the hex digits from the remainder in reverse order)
3, atau beberapa informasi rahasia yang hanya diketahui oleh Anda. Dengan kata lain, Anda harus terlebih dahulu memutuskan bagaimana merepresentasikan sepotong data dalam pola biner sebelum pola biner masuk akal. Interpretasi pola biner disebut representasi data atau pengkodean. Selain itu, skema representasi data harus disepakati oleh semua pihak, i. e. , standar industri perlu dirumuskan dan diikuti secara langsung
Setelah Anda memutuskan skema representasi data, kendala tertentu, khususnya presisi dan jangkauan akan diterapkan. Oleh karena itu, penting untuk memahami representasi data untuk menulis program yang benar dan berkinerja tinggi
Rosette Stone dan Penguraian Hieroglif Mesir
Hieroglif Mesir (di sebelah kiri) digunakan oleh orang Mesir kuno sejak 4000BC. Sayangnya, sejak 500AD, tidak ada lagi yang bisa membaca hieroglif Mesir kuno, sampai penemuan kembali Batu Rosette pada tahun 1799 oleh pasukan Napoleon (selama invasi Mesir Napoleon) di dekat kota Rashid (Rosetta) di Delta Nil.
Batu Rosetta (kiri) bertuliskan dekrit pada tahun 196 SM atas nama Raja Ptolemeus V. Keputusan itu muncul dalam tiga naskah. teks atas adalah hieroglif Mesir Kuno, bagian tengah naskah Demotik, dan Yunani Kuno terendah. Karena pada dasarnya menyajikan teks yang sama di ketiga skrip, dan bahasa Yunani Kuno masih dapat dipahami, itu memberikan kunci untuk menguraikan hieroglif Mesir.
Moral dari cerita ini adalah kecuali Anda mengetahui skema penyandiannya, tidak mungkin Anda dapat memecahkan kode datanya
Referensi dan gambar. Wikipedia
Representasi bilangan bulat
Bilangan bulat adalah bilangan bulat atau bilangan titik tetap dengan titik radix ditetapkan setelah bit yang paling tidak signifikan. Mereka kontras dengan bilangan real atau bilangan floating-point, di mana posisi titik radix bervariasi. Penting untuk dicatat bahwa bilangan bulat dan bilangan floating-point diperlakukan berbeda di komputer. Mereka memiliki representasi yang berbeda dan diproses secara berbeda (mis. g. , angka floating-point diproses dalam apa yang disebut prosesor floating-point). Angka floating-point akan dibahas nanti
Komputer menggunakan jumlah bit yang tetap untuk mewakili bilangan bulat. Panjang bit yang umum digunakan untuk bilangan bulat adalah 8-bit, 16-bit, 32-bit atau 64-bit. Selain bit-panjang, ada dua skema representasi untuk bilangan bulat
- Bilangan bulat yang tidak ditandatangani. dapat mewakili nol dan bilangan bulat positif
- Integer yang ditandatangani. dapat mewakili nol, bilangan bulat positif dan negatif. Tiga skema representasi telah diusulkan untuk bilangan bulat yang ditandatangani
- Representasi Sign-Magnitude
- Representasi Pelengkap 1
- Representasi Pelengkap 2
Anda, sebagai pemrogram, perlu memutuskan panjang bit dan skema representasi untuk bilangan bulat Anda, bergantung pada persyaratan aplikasi Anda. Misalkan Anda memerlukan penghitung untuk menghitung jumlah kecil dari 0 hingga 200, Anda dapat memilih skema bilangan bulat 8-bit tanpa tanda karena tidak ada bilangan negatif yang terlibat.
n-bit Unsigned Integer
Bilangan bulat yang tidak ditandatangani dapat mewakili nol dan bilangan bulat positif, tetapi bukan bilangan bulat negatif. Nilai bilangan bulat yang tidak ditandatangani ditafsirkan sebagai "besarnya pola biner yang mendasarinya"
Contoh 1. Misalkan
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_14 dan pola binernya adalah
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
15, nilai bilangan bulat tak bertanda ini adalah
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
16
Contoh 2. Misalkan
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_17 dan pola binernya adalah
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
18, nilai bilangan bulat tak bertanda ini adalah
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
19
Contoh 3. Misalkan
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_17 dan pola binernya adalah
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
21, nilai bilangan bulat tak bertanda ini adalah
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
5
Pola n-bit dapat mewakili
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
02 bilangan bulat yang berbeda. Integer tak bertanda n-bit dapat mewakili bilangan bulat dari
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
5 hingga
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
25, seperti yang ditabulasikan di bawah ininMinimumMaximum80(2^8)-1 (=255)160(2^16)-1 (=65.535)320(2^32)-1 (=4.294.967.295) (9+ digit)640(2^64)-1 (
Integer yang ditandatangani
Bilangan bulat yang ditandatangani dapat mewakili nol, bilangan bulat positif, serta bilangan bulat negatif. Tiga skema representasi tersedia untuk bilangan bulat bertanda
- Representasi Sign-Magnitude
- Representasi Pelengkap 1
- Representasi Pelengkap 2
Dalam ketiga skema di atas, most-significant bit (msb) disebut bit tanda. Bit tanda digunakan untuk mewakili tanda bilangan bulat - dengan 0 untuk bilangan bulat positif dan 1 untuk bilangan bulat negatif. Besarnya bilangan bulat, bagaimanapun, ditafsirkan secara berbeda dalam skema yang berbeda
Integer Tanda n-bit dalam Representasi Sign-Magnitude
Dalam representasi tanda-magnitudo
- Most-significant bit (msb) adalah bit tanda, dengan nilai 0 mewakili bilangan bulat positif dan 1 mewakili bilangan bulat negatif
- N-1 bit yang tersisa mewakili besarnya (nilai absolut) dari bilangan bulat. Nilai absolut dari bilangan bulat ditafsirkan sebagai "magnitudo pola biner (n-1)-bit"
Contoh 1. Misalkan
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_14 dan representasi binernya adalah
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
27
Bit tanda adalah
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
_5 ⇒ positif
Nilai absolutnya adalah
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_29
Oleh karena itu, bilangan bulatnya adalah
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_30
Contoh 2. Misalkan
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_14 dan representasi binernya adalah
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
32
Bit tanda adalah
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
_6 ⇒ negatif
Nilai absolutnya adalah
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_34
Oleh karena itu, bilangan bulatnya adalah
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_35
Contoh 3. Misalkan
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_14 dan representasi binernya adalah
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
37
Bit tanda adalah
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
_5 ⇒ positif
Nilai absolutnya adalah
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_39
Oleh karena itu, bilangan bulatnya adalah
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_40
Contoh 4. Misalkan
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_14 dan representasi binernya adalah
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
42
Bit tanda adalah
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
_6 ⇒ negatif
Nilai absolutnya adalah
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_39
Oleh karena itu, bilangan bulatnya adalah
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_45
Kelemahan representasi tanda-magnitudo adalah
- Ada dua representasi (
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
46 dan 10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
47) untuk angka nol, yang dapat menyebabkan inefisiensi dan kebingungan - Bilangan bulat positif dan negatif perlu diproses secara terpisah
n-bit Tanda Integer dalam Representasi Komplemen 1
Dalam representasi komplemen 1
- Sekali lagi, bit paling signifikan (msb) adalah bit tanda, dengan nilai 0 mewakili bilangan bulat positif dan 1 mewakili bilangan bulat negatif.
- N-1 bit yang tersisa mewakili besarnya bilangan bulat, sebagai berikut
- untuk bilangan bulat positif, nilai absolut bilangan bulat sama dengan "magnitudo pola biner (n-1)-bit"
- untuk bilangan bulat negatif, nilai absolut bilangan bulat sama dengan "magnitudo komplemen (kebalikan) dari pola biner (n-1)-bit" (maka disebut komplemen 1)
Contoh 1. Misalkan
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_14 dan representasi biner
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
27
Bit tanda adalah
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
_5 ⇒ positif
Nilai absolutnya adalah
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_29
Oleh karena itu, bilangan bulatnya adalah
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_30
Contoh 2. Misalkan
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_14 dan representasi biner
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
32
Bit tanda adalah
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
_6 ⇒ negatif
Nilai absolut adalah komplemen dari
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
56, i. e. ,
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_57
Oleh karena itu, bilangan bulatnya adalah
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_58
Contoh 3. Misalkan
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_14 dan representasi biner
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
37
Bit tanda adalah
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
_5 ⇒ positif
Nilai absolutnya adalah
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_39
Oleh karena itu, bilangan bulatnya adalah
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_40
Contoh 4. Misalkan
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_14 dan representasi biner
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
65
Bit tanda adalah
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
_6 ⇒ negatif
Nilai absolut adalah komplemen dari
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
67, i. e. ,
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_39
Oleh karena itu, bilangan bulatnya adalah
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_45
Sekali lagi, kekurangannya adalah
- Ada dua representasi (
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_46 dan 10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
71) untuk nol - Bilangan bulat positif dan bilangan bulat negatif perlu diproses secara terpisah
n-bit Tanda Integer dalam Representasi Komplemen 2
Dalam representasi komplemen 2
- Sekali lagi, bit paling signifikan (msb) adalah bit tanda, dengan nilai 0 mewakili bilangan bulat positif dan 1 mewakili bilangan bulat negatif.
- N-1 bit yang tersisa mewakili besarnya bilangan bulat, sebagai berikut
- untuk bilangan bulat positif, nilai absolut bilangan bulat sama dengan "magnitudo pola biner (n-1)-bit"
- untuk bilangan bulat negatif, nilai mutlak bilangan bulat sama dengan "magnitudo komplemen pola biner (n-1)-bit ditambah satu" (maka disebut komplemen 2)
Contoh 1. Misalkan
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_14 dan representasi biner
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
27
Bit tanda adalah
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
_5 ⇒ positif
Nilai absolutnya adalah
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_29
Oleh karena itu, bilangan bulatnya adalah
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_30
Contoh 2. Misalkan
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_14 dan representasi biner
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
32
Bit tanda adalah
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
_6 ⇒ negatif
Nilai absolut adalah komplemen dari
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
56 ditambah
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
6, i. e. ,
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_82
Oleh karena itu, bilangan bulatnya adalah
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_83
Contoh 3. Misalkan
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_14 dan representasi biner
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
37
Bit tanda adalah
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
_5 ⇒ positif
Nilai absolutnya adalah
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_39
Oleh karena itu, bilangan bulatnya adalah
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_40
Contoh 4. Misalkan
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_14 dan representasi biner
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
65
Bit tanda adalah
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
_6 ⇒ negatif
Nilai absolut adalah komplemen dari
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
67 ditambah
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
6, i. e. ,
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_94
Oleh karena itu, bilangan bulatnya adalah
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_35
Komputer menggunakan 2's Complement Representation untuk Signed Integers
Kami telah membahas tiga representasi untuk bilangan bulat yang ditandatangani. besaran bertanda, komplemen 1 dan komplemen 2. Komputer menggunakan komplemen 2 untuk mewakili bilangan bulat bertanda. hal ini dikarenakan
- Hanya ada satu representasi untuk angka nol dalam komplemen 2, bukan dua representasi dalam magnitudo tanda dan komplemen 1
- Bilangan bulat positif dan negatif dapat diperlakukan bersama sebagai penjumlahan dan pengurangan. Pengurangan dapat dilakukan dengan menggunakan "logika penjumlahan"
Contoh 1. Penambahan Dua Bilangan Bulat Positif. Misalkan
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_96
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_1
Contoh 2. Pengurangan diperlakukan sebagai Penambahan Bilangan Bulat Positif dan Negatif. Misalkan
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_97
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_2
Contoh 3. Penambahan Dua Bilangan Bulat Negatif. Misalkan
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_98
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_3
Karena presisi tetap (mis. e. , jumlah bit tetap), bilangan bulat bertanda pelengkap n-bit 2 memiliki rentang tertentu. Misalnya, untuk
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_14, rentang bilangan bulat bertanda pelengkap 2 adalah
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
00 hingga
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
01. Selama penambahan (dan pengurangan), penting untuk memeriksa apakah hasilnya melebihi rentang ini, dengan kata lain, apakah telah terjadi luapan atau kekurangan
Contoh 4. Meluap. Misalkan
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
_02 (meluap - di luar jangkauan)
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_4
Contoh 5. Arus bawah. Misalkan
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
_03 (underflow - di bawah kisaran)
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_5
Diagram berikut menjelaskan cara kerja komplemen 2. Dengan mengatur ulang garis bilangan, nilai dari
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
00 hingga
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
01 diwakili secara berurutan dengan mengabaikan bit bawaan
Rentang Integer Bertanda Pelengkap n-bit 2
Bilangan bulat bertanda pelengkap n-bit 2 dapat mewakili bilangan bulat dari
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
06 hingga
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
07, seperti yang ditabulasikan. Perhatikan bahwa skema dapat mewakili semua bilangan bulat dalam rentang, tanpa ada celah. Dengan kata lain, tidak ada bilangan bulat yang hilang dalam rentang yang didukungnminimummaximum8-(2^7) (=-128)+(2^7)-1 (=+127)16-(2^15) (=-32.768)+(2^15)-1 (=+32.767)
Mendekode Bilangan Komplemen 2
- Periksa bit tanda (dilambangkan sebagai
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
08) - Jika
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
_09, angkanya positif dan nilai absolutnya adalah nilai biner dari n-1 bit yang tersisa - Jika
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
_10, angkanya negatif. Anda bisa "membalikkan n-1 bit dan ditambah 1" untuk mendapatkan nilai absolut dari angka negatif
Alternatifnya, Anda dapat memindai bit n-1 yang tersisa dari kanan (bit paling tidak signifikan). Cari kejadian pertama dari 1. Balikkan semua bit ke kiri dari kejadian pertama 1. Pola terbalik memberikan nilai absolut. Misalnya,10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_6
Big Endian vs. Endian kecil
Komputer modern menyimpan satu byte data di setiap alamat atau lokasi memori, mis. e. , byte memori yang dapat dialamatkan. Oleh karena itu, bilangan bulat 32-bit disimpan dalam 4 alamat memori
Istilah "Endian" mengacu pada urutan penyimpanan byte dalam memori komputer. Dalam skema "Big Endian", byte paling signifikan disimpan terlebih dahulu di alamat memori terendah (atau big in first), sedangkan "Little Endian" menyimpan byte paling signifikan di alamat memori terendah
Misalnya, bilangan bulat 32-bit 12345678H (30541989610) disimpan sebagai 12H 34H 56H 78H dalam big endian; . Bilangan bulat 16-bit 00H 01H ditafsirkan sebagai 0001H dalam big endian, dan 0100H sebagai little endian
Latihan (Representasi Bilangan Bulat)
- Berapa kisaran integer 8-bit, 16-bit, 32-bit dan 64-bit, dalam representasi "unsigned" dan "signed"?
- Berikan nilai
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
11, A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
5, A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
6, A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
14, dan A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
15 representasi unsigned in8-bit - Berikan nilai
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
16, A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
17 , A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
18, A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
5, A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
20, A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
00, dan A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
01 dalam representasi bertanda komplemen 8-bit 2 - Berikan nilai
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
16, A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
17 , A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
18, A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
5, A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
20, A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
28, dan A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
01 dalam representasi magnitudo tanda 8-bit - Berikan nilai
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
16, A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
17 , A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
18, A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
5, A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
20, A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
28 dan A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
01 dalam representasi komplemen 8-bit 1 - [TODO] lagi
Jawaban
- Kisaran bilangan bulat n-bit yang tidak ditandatangani adalah
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
37. Kisaran bilangan bulat bertanda pelengkap n-bit 2 adalah A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
38; A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
39, A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
40, A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
41, A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
42, A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
43A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
44, A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
45, A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
46, A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
40, A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
48, A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
49, A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
50A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
44, A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
52, A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
53, A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
54, A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
48, A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
56, A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
50A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
44, A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
59, A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
60, A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
61, A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
48, A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
63, A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
50
Representasi Angka Floating-Point
Angka floating-point (atau bilangan real) dapat mewakili nilai yang sangat besar (
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
65) atau sangat kecil (
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
66). Itu juga bisa mewakili angka negatif yang sangat besar (
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
67) dan angka negatif yang sangat kecil (
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
67), serta nol, seperti yang diilustrasikan
Bilangan floating-point biasanya dinyatakan dalam notasi ilmiah, dengan pecahan (
A1C2H = 10×16^3 + 1×16^2 + 12×16^1 + 2 = 41410 (base 10)
10110B = 1×2^4 + 1×2^2 + 1×2^1 = 22 (base 10)
4), dan eksponen (
A1C2H = 10×16^3 + 1×16^2 + 12×16^1 + 2 = 41410 (base 10)
10110B = 1×2^4 + 1×2^2 + 1×2^1 = 22 (base 10)
3) dari radix tertentu (
To convert 261(base 10) to hexadecimal:
261/16 => quotient=16 remainder=5
16/16 => quotient=1 remainder=0
1/16 => quotient=0 remainder=1 (quotient=0 stop)
Hence, 261D = 105H (Collect the hex digits from the remainder in reverse order)
7), dalam bentuk
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
72. Bilangan desimal menggunakan radix 10 (
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
73);
Representasi angka floating point tidak unik. Misalnya, angka
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
75 dapat direpresentasikan sebagai
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
76,
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
77,
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
78, dan seterusnya. Bagian pecahan dapat dinormalisasi. Dalam bentuk normalisasi, hanya ada satu digit bukan nol sebelum titik radix. Misalnya, angka desimal
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
_79 dapat dinormalisasi menjadi
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
80;
Penting untuk dicatat bahwa angka titik-mengambang mengalami kehilangan presisi ketika direpresentasikan dengan jumlah bit yang tetap (mis. g. , 32-bit atau 64-bit). Ini karena ada jumlah bilangan real yang tak terbatas (bahkan dalam kisaran kecil 0. 0 ke 0. 1). Di sisi lain, pola biner n-bit dapat mewakili
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
02 angka berbeda yang terbatas. Oleh karena itu, tidak semua bilangan real dapat direpresentasikan. Pendekatan terdekat akan digunakan sebagai gantinya, mengakibatkan hilangnya akurasi
Penting juga untuk dicatat bahwa aritmatika bilangan mengambang jauh lebih tidak efisien daripada aritmatika bilangan bulat. Itu bisa dipercepat dengan apa yang disebut co-prosesor floating-point khusus. Karenanya, gunakan bilangan bulat jika aplikasi Anda tidak memerlukan angka titik-mengambang
Di komputer, angka floating-point direpresentasikan dalam notasi ilmiah pecahan (
A1C2H = 10×16^3 + 1×16^2 + 12×16^1 + 2 = 41410 (base 10)
10110B = 1×2^4 + 1×2^2 + 1×2^1 = 22 (base 10)
4) dan eksponen (
A1C2H = 10×16^3 + 1×16^2 + 12×16^1 + 2 = 41410 (base 10)
10110B = 1×2^4 + 1×2^2 + 1×2^1 = 22 (base 10)
3) dengan radix 2, dalam bentuk
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
74. Baik
A1C2H = 10×16^3 + 1×16^2 + 12×16^1 + 2 = 41410 (base 10)
10110B = 1×2^4 + 1×2^2 + 1×2^1 = 22 (base 10)
3 dan
A1C2H = 10×16^3 + 1×16^2 + 12×16^1 + 2 = 41410 (base 10)
10110B = 1×2^4 + 1×2^2 + 1×2^1 = 22 (base 10)
4 bisa positif maupun negatif. Komputer modern mengadopsi standar IEEE 754 untuk merepresentasikan bilangan floating-point. Ada dua skema representasi. Presisi tunggal 32-bit dan presisi ganda 64-bit
IEEE-754 32-bit Nomor Floating-Point Presisi Tunggal
Dalam representasi floating-point presisi tunggal 32-bit
- Bit paling signifikan adalah bit tanda (
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
08), dengan 0 untuk bilangan positif dan 1 untuk bilangan negatif - 8 bit berikut mewakili eksponen (
A1C2H = 10×16^3 + 1×16^2 + 12×16^1 + 2 = 41410 (base 10)
10110B = 1×2^4 + 1×2^2 + 1×2^1 = 22 (base 10)
3) - 23 bit sisanya mewakili pecahan (
A1C2H = 10×16^3 + 1×16^2 + 12×16^1 + 2 = 41410 (base 10)
10110B = 1×2^4 + 1×2^2 + 1×2^1 = 22 (base 10)
4)
Bentuk Normalisasi
Mari kita ilustrasikan dengan sebuah contoh, misalkan pola 32-bit adalah
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
92, dengan
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
_93A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
_94A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
_95
Dalam bentuk ternormalisasi, pecahan sebenarnya dinormalisasi dengan 1 di depan implisit dalam bentuk
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
96. Dalam contoh ini, pecahan sebenarnya adalah
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
_97
Bit tanda mewakili tanda angka, dengan
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
09 untuk angka positif dan
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
10 untuk angka negatif. Dalam contoh ini dengan
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
_10, ini adalah angka negatif, i. e. ,
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
_01
Dalam bentuk normalisasi, eksponen sebenarnya adalah
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
02 (disebut kelebihan-127 atau bias-127). Ini karena kita perlu merepresentasikan eksponen positif dan negatif. Dengan E 8-bit, mulai dari 0 hingga 255, skema kelebihan-127 dapat memberikan eksponen sebenarnya dari -127 hingga 128. Dalam contoh ini,
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
_03
Oleh karena itu, angka yang diwakili adalah
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
_04
Formulir De-Normalisasi
Bentuk yang dinormalisasi memiliki masalah serius, dengan 1 di depan implisit untuk pecahan, itu tidak dapat mewakili angka nol. Yakinkan diri Anda tentang hal ini
Bentuk de-normalisasi dirancang untuk mewakili nol dan angka lainnya
Untuk
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
_05, angkanya dalam bentuk de-normalisasi. 0 di depan implisit (bukan 1) digunakan untuk pecahan; . Oleh karena itu, angka nol dapat diwakili dengan
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
_05 dan
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
08 (karena
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
09)
Kami juga dapat mewakili bilangan positif dan negatif yang sangat kecil dalam bentuk de-normalisasi dengan
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
05. Misalnya, jika
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
10,
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
05, dan
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
13. Pecahan sebenarnya adalah
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
_14. Sejak
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
_10, itu adalah angka negatif. Dengan
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
_05, eksponen sebenarnya adalah
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
06. Oleh karena itu angkanya adalah
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
18, yang merupakan angka negatif yang sangat kecil (mendekati nol)
Ringkasan
Singkatnya, nilai (
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
_19) dihitung sebagai berikut
- Untuk
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
_20. Angka-angka ini dalam apa yang disebut bentuk normalisasi. Sign-bit mewakili tanda angka. Bagian pecahan (A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
_96) dinormalisasi dengan awalan implisit 1. Eksponen adalah bias (atau lebih) dari A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
14, sehingga mewakili eksponen positif dan negatif. Kisaran eksponen adalah A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
_06 hingga A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
01 - Untuk
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
_25. Angka-angka ini dalam apa yang disebut bentuk denormalisasi. Eksponen dari A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
26 bernilai sangat kecil. Bentuk denormalisasi diperlukan untuk mewakili nol (dengan A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
08 dan A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
05). Itu juga dapat mewakili angka positif dan negatif yang sangat kecil mendekati nol - Untuk
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
_29, itu mewakili nilai khusus, seperti A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
30 (positif dan negatif tak terhingga) dan A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
31 (bukan angka). Ini di luar cakupan artikel ini
Contoh 1. Misalkan pola representasi floating-point IEEE-754 32-bit adalah
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
32
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_7
Contoh 2. Misalkan pola representasi floating-point IEEE-754 32-bit adalah
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
33
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_8
Contoh 3. Misalkan pola representasi floating-point IEEE-754 32-bit adalah
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
34
10110B = 10000B + 0000B + 100B + 10B + 0B = 1×2^4 + 0×2^3 + 1×2^2 + 1×2^1 + 0×2^0
_9
Contoh 4 (Bentuk De-Normalisasi). Misalkan pola representasi floating-point IEEE-754 32-bit adalah
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
35
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
0
Latihan (Bilangan titik-mengambang)
- Hitung bilangan positif terbesar dan terkecil yang dapat direpresentasikan dalam bentuk normalisasi 32-bit
- Hitung angka negatif terbesar dan terkecil dapat direpresentasikan dalam bentuk normalisasi 32-bit
- Ulangi (1) untuk bentuk denormalisasi 32-bit
- Ulangi (2) untuk bentuk denormalisasi 32-bit
Petunjuk
- Bilangan positif terbesar.
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
09, A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
37, A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
38
Bilangan positif terkecil. A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
09, A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
40, A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
41 - Sama seperti di atas, tetapi
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
10 - Bilangan positif terbesar.
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
09, A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
05, A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
38
Bilangan positif terkecil. A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
09, A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
05, A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
48 - Sama seperti di atas, tetapi
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
10
Catatan Untuk Pengguna Java
Anda dapat menggunakan metode JDK
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
_50 atau
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
51 untuk membuat presisi tunggal 32-bit
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
52 atau presisi ganda 64-bit
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
53 dengan pola bit tertentu, dan mencetak nilainya. Sebagai contoh,
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
_1
IEEE-754 64-bit Angka Floating-Point Presisi Ganda
Skema representasi untuk presisi ganda 64-bit mirip dengan presisi tunggal 32-bit
- Bit paling signifikan adalah bit tanda (
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
08), dengan 0 untuk bilangan positif dan 1 untuk bilangan negatif - 11 bit berikut mewakili eksponen (
A1C2H = 10×16^3 + 1×16^2 + 12×16^1 + 2 = 41410 (base 10)
10110B = 1×2^4 + 1×2^2 + 1×2^1 = 22 (base 10)
3) - 52 bit sisanya mewakili pecahan (
A1C2H = 10×16^3 + 1×16^2 + 12×16^1 + 2 = 41410 (base 10)
10110B = 1×2^4 + 1×2^2 + 1×2^1 = 22 (base 10)
4)
Nilai (
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
_19) dihitung sebagai berikut
- Bentuk yang dinormalisasi. Untuk
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
_58 - Bentuk denormalisasi. Untuk
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
_59. Ini dalam bentuk denormalisasi - Untuk
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
_60, A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
19 mewakili nilai khusus, seperti A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
30 (tak terhingga), A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
31 (bukan angka)
Lebih lanjut tentang Representasi Titik Mengambang
Ada tiga bagian dalam representasi floating-point
Angka Floating-Point yang Dinormalisasi
Dalam bentuk normalisasi, titik radix ditempatkan setelah angka bukan nol pertama, misalnya g. ,
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
67,
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
68. Untuk bilangan biner, bit terdepan selalu 1, dan tidak perlu direpresentasikan secara eksplisit - ini menghemat 1 bit penyimpanan
Dalam bentuk normalisasi IEEE 754
- Untuk presisi tunggal,
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
_69 dengan kelebihan 127. Oleh karena itu, eksponen sebenarnya adalah dari A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
06 hingga A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
01. Eksponen negatif digunakan untuk mewakili angka kecil (<1. 0); . 0)
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
_72 - Untuk presisi ganda,
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
_73 dengan kelebihan 1023. Eksponen sebenarnya adalah dari A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
74 hingga A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
75, dan
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
_76
Perhatikan bahwa pola n-bit memiliki jumlah kombinasi yang terbatas (
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
77), yang dapat mewakili angka berbeda yang terbatas. Tidak mungkin untuk merepresentasikan bilangan tak terhingga pada sumbu sebenarnya (bahkan rentang kecil mengatakan 0. 0 sampai 1. 0 memiliki angka tak terbatas). Artinya, tidak semua bilangan floating-point dapat direpresentasikan secara akurat. Sebaliknya, pendekatan terdekat digunakan, yang menyebabkan hilangnya akurasi
Angka floating-point minimum dan maksimum yang dinormalisasi adalah
PresisiNormalisasi N(min)Normalisasi N(maks)Tunggal0080 0000H
0 00000001 00000000000000000000000B
E = 1, F = 0
N(menit) = 1. 0B × 2^-126
(≈1. 17549435 × 10^-38)7F7F FFFFH
0 11111110 00000000000000000000000B
E = 254, F = 0
N(maks) = 1. 1. 1B × 2^127 = (2 - 2^-23) × 2^127
(≈3. 4028235 × 10^38) Ganda0010 0000 0000 0000H
N(menit) = 1. 0B × 2^-1022
(≈2. 2250738585072014 × 10^-308)7FEF FFFF FFFF FFFFH
N(maks) = 1. 1. 1B × 2^1023 = (2 - 2^-52) × 2^1023
(≈1. 7976931348623157 × 10^308)
Nomor Floating-Point yang Didenormalisasi
Jika
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
_78, tetapi pecahannya bukan nol, maka nilainya dalam bentuk terdenormalisasi, dan diasumsikan bit awal 0, sebagai berikut
- Untuk presisi tunggal,
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
_78,
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
_80 - Untuk presisi ganda,
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
_78,
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
_82
Bentuk yang didenormalisasi dapat mewakili angka yang sangat kecil mendekati nol, dan nol, yang tidak dapat direpresentasikan dalam bentuk yang dinormalisasi, seperti yang ditunjukkan pada gambar di atas
Minimum dan maksimum bilangan floating-point yang didenormalisasi adalah
PresisiDenormalisasi D(mnt)Denormalisasi D(maks)Tunggal0000 0001H
0 00000000 00000000000000000000001B
E = 0, F = 00000000000000000000001B
D(menit) = 0. 0. 1 × 2^-126 = 1 × 2^-23 × 2^-126 = 2^-149
(≈1. 4 × 10^-45)007F FFFFH
0 00000000 11111111111111111111111B
E = 0, F = 11111111111111111111111B
D(maks) = 0. 1. 1 × 2^-126 = (1-2^-23)×2^-126
(≈1. 1754942 × 10^-38) Ganda0000 0000 0000 0001H
D(menit) = 0. 0. 1 × 2^-1022 = 1 × 2^-52 × 2^-1022 = 2^-1074
(≈4. 9 × 10^-324)001F FFFF FFFF FFFFH
D(maks) = 0. 1. 1 × 2^-1022 = (1-2^-52)×2^-1022
(≈4. 4501477170144023 × 10^-308)
Nilai Khusus
Nol. Nol tidak dapat direpresentasikan dalam bentuk normalisasi, dan harus direpresentasikan dalam bentuk denormalisasi dengan
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
05 dan
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
08. Ada dua representasi untuk nol.
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
85 dengan
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
09 dan
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
87 dengan
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
10
Ketakterbatasan. Nilai + tak terhingga (mis. g. ,
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
_89) dan -infinity (mis. g. ,
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
90) diwakili dengan eksponen semua 1 (
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
29 untuk presisi tunggal dan
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
60 untuk presisi ganda),
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
08, dan
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
09 (untuk
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
95) dan
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
10 (untuk ____9__7)___
Bukan Angka (NaN).
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
31 menunjukkan nilai yang tidak dapat direpresentasikan sebagai bilangan real (mis. g.
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
_99).
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
31 dilambangkan dengan Pangkat semua 1 (
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
29 untuk presisi tunggal dan
A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
60 untuk presisi ganda) dan pecahan bukan nol
Pengkodean Karakter
Dalam memori komputer, karakter "dikodekan" (atau "diwakili") menggunakan "skema pengkodean karakter" yang dipilih (alias "set karakter", "set karakter", "peta karakter", atau "halaman kode")
Misalnya, di ASCII (serta Latin1, Unicode, dan banyak rangkaian karakter lainnya)
- nomor kode
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
03 sampai 1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
04 masing-masing mewakili To convert 261(base 10) to hexadecimal:
261/16 => quotient=16 remainder=5
16/16 => quotient=1 remainder=0
1/16 => quotient=0 remainder=1 (quotient=0 stop)
Hence, 261D = 105H (Collect the hex digits from the remainder in reverse order)
3 sampai 1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
06 - nomor kode
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
07 sampai 1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
08 masing-masing mewakili To convert 261(base 10) to hexadecimal:
261/16 => quotient=16 remainder=5
16/16 => quotient=1 remainder=0
1/16 => quotient=0 remainder=1 (quotient=0 stop)
Hence, 261D = 105H (Collect the hex digits from the remainder in reverse order)
1 sampai 1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
10 - nomor kode
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
_11 sampai 1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
12 masing-masing mewakili 1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
13 sampai 1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
14
Penting untuk dicatat bahwa skema representasi harus diketahui sebelum pola biner dapat diinterpretasikan. e. g. , pola 8-bit "
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
_15" dapat mewakili apa pun di bawah matahari yang hanya diketahui oleh orang yang mengkodekannya
Skema pengkodean karakter yang paling umum digunakan adalah. 7-bit ASCII (ISO/IEC 646) dan 8-bit Latin-x (ISO/IEC 8859-x) untuk karakter eropa barat, dan Unicode (ISO/IEC 10646) untuk internasionalisasi (i18n)
Skema pengkodean 7-bit (seperti ASCII) dapat mewakili 128 karakter dan simbol. Skema pengkodean karakter 8-bit (seperti Latin-x) dapat mewakili 256 karakter dan simbol;
Kode ASCII 7-bit (alias US-ASCII, ISO/IEC 646, ITU-T T. 50)
- ASCII (Kode Standar Amerika untuk Pertukaran Informasi) adalah salah satu skema pengkodean karakter sebelumnya
- ASCII awalnya adalah kode 7-bit. Ini telah diperpanjang menjadi 8-bit untuk memanfaatkan organisasi memori komputer 8-bit dengan lebih baik. (Bit ke-8 pada awalnya digunakan untuk pemeriksaan paritas di komputer awal. )
- Code numbers
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
16 to 1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
17 are printable (displayable) characters as tabulated (arranged in hexadecimal and decimal) as follows:Hex0123456789ABCDEF2SP!"#$%&'()*+,-./30123456789:;<=>?4@ABCDEFGHIJKLMNO5PQRSTUVWXYZ[\]^_6`abcdefghijklmno7pqrstuvwxyz{|}~
Dec01234567893SP!"#$%&'4()*+,-./01523456789:;6<=>?@ABCDE7FGHIJKLMNO8PQRSTUVWXY9Z[\]^_`abc10defghijklm11nopqrstuvw12xyz{|}~- Nomor kode
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
_16 adalah karakter kosong atau spasi 1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
_13 sampai 1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
14. 1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
_21 atau 1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
22 di mana 1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
23 adalah nilai bilangan bulat yang setara1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
24To convert 261(base 10) to hexadecimal:
261/16 => quotient=16 remainder=5
16/16 => quotient=1 remainder=0
1/16 => quotient=0 remainder=1 (quotient=0 stop)
Hence, 261D = 105H (Collect the hex digits from the remainder in reverse order)
3 sampai 1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
06. 1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
_27 atau 1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
28. To convert 261(base 10) to hexadecimal:
261/16 => quotient=16 remainder=5
16/16 => quotient=1 remainder=0
1/16 => quotient=0 remainder=1 (quotient=0 stop)
Hence, 261D = 105H (Collect the hex digits from the remainder in reverse order)
3 hingga 1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
06 terus menerus tanpa celahTo convert 261(base 10) to hexadecimal:
261/16 => quotient=16 remainder=5
16/16 => quotient=1 remainder=0
1/16 => quotient=0 remainder=1 (quotient=0 stop)
Hence, 261D = 105H (Collect the hex digits from the remainder in reverse order)
1 hingga 1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
10. 1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
_33 atau 1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
34. To convert 261(base 10) to hexadecimal:
261/16 => quotient=16 remainder=5
16/16 => quotient=1 remainder=0
1/16 => quotient=0 remainder=1 (quotient=0 stop)
Hence, 261D = 105H (Collect the hex digits from the remainder in reverse order)
3 hingga 1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
06 juga terus menerus tanpa celah. Namun, ada celah antara huruf besar dan huruf kecil. Untuk mengonversi antara huruf besar dan kecil, balikkan nilai bit-5
- Nomor kode
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
37 sampai 1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
38, dan 1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
39 adalah karakter kontrol khusus, yang tidak dapat dicetak (non-displayable), seperti tabel di bawah ini. Banyak dari karakter ini digunakan pada masa-masa awal untuk kontrol transmisi (mis. g. , STX, ETX) dan kontrol printer (mis. g. , Form-Feed), yang sekarang sudah usang. Kode bermakna yang tersisa saat ini adalah1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
_40 untuk Tab (1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
41)1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
_42 untuk Line-Feed atau baris baru (LF atau 1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
43) dan 1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
44 untuk Carriage-Return (CR atau 1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
45), yang digunakan sebagai pembatas baris (alias pemisah baris, akhir baris) untuk file teks. Sayangnya tidak ada standar untuk pembatas garis. Unix dan Mac menggunakan 1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
_42 (LF atau "1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
47"), Windows menggunakan 1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
48 (CR+LF atau "1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
49"). Bahasa pemrograman seperti C/C++/Java (yang dibuat di Unix) menggunakan 1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
42 (LF atau "1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
47")- Dalam bahasa pemrograman seperti C/C++/Java, line-feed (
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
42) dilambangkan sebagai 1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
43, carriage-return (1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
44) sebagai 1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
55, tab (1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
40) sebagai 1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
41
DECHEXArtiDECHEXArti000NULNull1711DC1Kontrol Perangkat 1101SOHMulai Judul 1812DC2Kontrol Perangkat 2202STXMulai Teks 1913DC3Kontrol Perangkat 3303ETXAkhir Teks2014DC4Kontrol Perangkat 4404EOTEnd of Transmission2115NAKNegatif Ack. 505ENQEnquiry2216SYNSync. Idle606ACKAcknowledgment2317ETBEnd of Transmission707BELBell2418CANCancel808BSBack Space
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
582519EMEnd of Medium909HTHorizontal Tab
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
41261ASUBSubstitute100ALFLine Feed
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
43271BESCEscape110BVTVertical Feed281CIS4File Separator120CFFForm Feed
To convert 261(base 10) to hexadecimal:
261/16 => quotient=16 remainder=5
16/16 => quotient=1 remainder=0
1/16 => quotient=0 remainder=1 (quotient=0 stop)
Hence, 261D = 105H (Collect the hex digits from the remainder in reverse order)
2291DIS3Group Separator130DCRCarriage Return
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
55301EIS2Record Separator140ESOShift Out311FIS1Unit Separator150FSIShift In1610DLEDatalink Escape1277FDELDelete
8-bit Latin-1 (alias ISO/IEC 8859-1)
ISO/IEC-8859 adalah kumpulan standar pengkodean karakter 8-bit untuk bahasa barat
ISO/IEC 8859-1, alias abjad Latin No. 1, atau singkatnya Latin-1, adalah skema pengkodean yang paling umum digunakan untuk bahasa Eropa Barat. Ini memiliki 191 karakter yang dapat dicetak dari skrip latin, yang mencakup bahasa seperti Inggris, Jerman, Italia, Portugis, dan Spanyol. Latin-1 kompatibel dengan kode US-ASCII 7-bit. Artinya, 128 karakter pertama dalam bahasa Latin-1 (nomor kode 0 hingga 127 (7FH)), sama dengan US-ASCII. Nomor kode 128 (80H) hingga 159 (9FH) tidak ditetapkan. Nomor kode 160 (A0H) hingga 255 (FFH) diberikan sebagai berikut
Hex0123456789Abcdefanbsp¡ ¢ £ ¤ ¥ ¦§¨ © ª «¬shy®¯b ° ± ² ·éóóéééadisìóýónyóóóny '×ééééadisèþééééadisèééééééadisèééééééadisèöéééééadisèöéééééadisèöéééééadis »éééééadis» »»:» »» »» »» »» »» +
ISO/IEC-8859 memiliki 16 bagian. Selain Bagian 1 yang paling umum digunakan, Bagian 2 dimaksudkan untuk Eropa Tengah (Polandia, Ceko, Hungaria, dll), Bagian 3 untuk Eropa Selatan (Turki, dll), Bagian 4 untuk Eropa Utara (Estonia, Latvia, dll), . Bagian 16 untuk Eropa Tenggara
Ekstensi 8-bit lain dari US-ASCII (Ekstensi ASCII)
Selain ISO-8859-x standar, ada banyak ekstensi ASCII 8-bit, yang tidak kompatibel satu sama lain
ANSI (American National Standards Institute) (alias Windows-1252, atau Windows Codepage 1252). untuk huruf Latin yang digunakan dalam sistem DOS/Windows lawas. Ini adalah superset dari ISO-8859-1 dengan nomor kode 128 (80H) hingga 159 (9FH) yang ditetapkan untuk karakter yang dapat ditampilkan, seperti tanda kutip tunggal "pintar" dan tanda kutip ganda. Masalah umum di browser web adalah semua tanda kutip dan apostrof (dihasilkan oleh "tanda kutip pintar" di beberapa perangkat lunak Microsoft) diganti dengan tanda tanya atau beberapa simbol aneh. Itu karena dokumen diberi label sebagai ISO-8859-1 (bukan Windows-1252), di mana nomor kode ini tidak ditentukan. Sebagian besar browser modern dan klien email memperlakukan charset ISO-8859-1 sebagai Windows-1252 untuk mengakomodasi kesalahan pelabelan tersebut
Hex0123456789ABCDEF8€‚ƒ„…†‡ˆ‰Š‹ŒŽ9‘’“”•–—™š›œžŸ
EBCDIC (Kode Pertukaran Desimal Kode Biner Diperpanjang). Digunakan pada komputer IBM awal
Unicode (alias Kumpulan Karakter Universal ISO/IEC 10646)
Sebelum Unicode, tidak ada skema pengkodean karakter tunggal yang dapat mewakili karakter dalam semua bahasa. Misalnya, eropa barat menggunakan beberapa skema pengkodean (dalam keluarga ISO-8859-x). Bahkan satu bahasa seperti Cina memiliki beberapa skema pengkodean (GB2312/GBK, BIG5). Banyak skema pengkodean yang saling bertentangan, mis. e. , nomor kode yang sama diberikan untuk karakter yang berbeda
Unicode bertujuan untuk menyediakan skema pengkodean karakter standar, yang universal, efisien, seragam, dan tidak ambigu. Standar Unicode dikelola oleh organisasi nirlaba yang disebut Konsorsium Unicode (@ www. unicode. org). Unicode adalah standar ISO/IEC 10646
Unicode kompatibel dengan 7-bit US-ASCII dan 8-bit Latin-1 (ISO-8859-1). Artinya, 128 karakter pertama sama dengan US-ASCII;
Unicode awalnya menggunakan 16 bit (disebut UCS-2 atau Unicode Character Set - 2 byte), yang dapat mewakili hingga 65.536 karakter. Sejak itu telah diperluas menjadi lebih dari 16 bit, saat ini berdiri di 21 bit. Kisaran kode legal dalam ISO/IEC 10646 sekarang dari U+0000H hingga U+10FFFFH (21 bit atau sekitar 2 juta karakter), mencakup semua skrip sejarah saat ini dan kuno. Rentang 16-bit asli dari U+0000H hingga U+FFFFH (65536 karakter) dikenal sebagai Basic Multilingual Plane (BMP), mencakup semua bahasa utama yang digunakan saat ini. Karakter di luar BMP disebut Karakter Pelengkap, yang jarang digunakan
Unicode memiliki dua skema penyandian
- UCS-2 (Set Karakter Universal - 2 Byte). Menggunakan 2 byte (16 bit), mencakup 65.536 karakter dalam BMP. BMP cukup untuk sebagian besar aplikasi. UCS-2 sekarang sudah usang
- UCS-4 (Set Karakter Universal - 4 Byte). Menggunakan 4 byte (32 bit), mencakup BMP dan karakter tambahan
UTF-8 (Format Transformasi Unicode - 8-bit)
Unicode 16/32-bit (UCS-2/4) sangat tidak efisien jika dokumen berisi sebagian besar karakter ASCII, karena setiap karakter menempati dua byte penyimpanan. Skema pengkodean panjang variabel, seperti UTF-8, yang menggunakan 1-4 byte untuk mewakili karakter, dirancang untuk meningkatkan efisiensi. Dalam UTF-8, 128 karakter US-ASCII yang umum digunakan hanya menggunakan 1 byte, tetapi beberapa karakter yang kurang umum mungkin memerlukan hingga 4 byte. Secara keseluruhan, efisiensi ditingkatkan untuk dokumen yang sebagian besar berisi teks US-ASCII
Transformasi antara Unicode dan UTF-8 adalah sebagai berikut
BitsUnicodeUTF-8 CodeBytes700000000 0xxxxxxx0xxxxxxx1 (ASCII)1100000yyy yyxxxxxx110yyyyy 10xxxxxx216zzzzyyyy yyxxxxxx1110zzzz 10yyyyyy 10xxxxxx321000uuuuu zzzzyyyy yyxxxxxx111110uuu 10uuzzyxxxy40uu
Di UTF-8, nomor Unicode yang sesuai dengan karakter ASCII 7-bit diisi dengan nol di depan; . Karenanya, UTF-8 dapat digunakan dengan semua perangkat lunak yang menggunakan ASCII. Nomor Unicode 128 ke atas, yang lebih jarang digunakan, dikodekan menggunakan lebih banyak byte (2-4 byte). UTF-8 umumnya membutuhkan lebih sedikit penyimpanan dan kompatibel dengan ASCII. Kelemahan UTF-8 adalah lebih banyak daya pemrosesan yang dibutuhkan untuk membongkar kode karena panjangnya yang bervariasi. UTF-8 adalah format paling populer untuk Unicode
Catatan
Contoh. 您好
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
65
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
_2
UTF-16 (Format Transformasi Unicode - 16-bit)
UTF-16 adalah skema pengkodean karakter Unicode dengan panjang variabel, yang menggunakan 2 hingga 4 byte. UTF-16 tidak umum digunakan. Tabel transformasinya adalah sebagai berikut
UnicodeUTF-16 CodeBytesxxxxxxxx xxxxxxxxSama seperti UCS-2 - tanpa penyandian2000uuuuuu zzzzyyyy yyxxxxxx
(uuuuuu≠0)110110ww wwzzzzyy 110111yy yyxxxxxx
(www = uuu - 1)4
Perhatikan bahwa untuk 65536 karakter dalam BMP, UTF-16 sama dengan UCS-2 (2 byte). Namun, 4 byte digunakan untuk karakter tambahan di luar BMP
Untuk karakter BMP, UTF-16 sama dengan UCS-2. Untuk karakter pelengkap, setiap karakter memerlukan pasangan nilai 16-bit, yang pertama dari kisaran pengganti tinggi, (
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
66), yang kedua dari kisaran pengganti rendah (
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
67)
UTF-32 (Format Transformasi Unicode - 32-bit)
Sama seperti UCS-4, yang menggunakan 4 byte untuk setiap karakter - tidak dikodekan
Format Multi-Byte (mis. g. , Unicode) File Teks
Endianness (urutan byte). Untuk karakter multi-byte, Anda harus memperhatikan urutan byte dalam penyimpanan. Di big endian, byte paling signifikan disimpan di lokasi memori dengan alamat terendah (byte besar terlebih dahulu). Di little endian, byte paling signifikan disimpan di lokasi memori dengan alamat tertinggi (little byte terlebih dahulu). Misalnya, 您 (dengan nomor Unicode
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
68) disimpan sebagai
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
69 dalam big endian; . Big endian, yang menghasilkan hex dump yang lebih mudah dibaca, lebih sering digunakan, dan seringkali merupakan default
BOM (Byte Order Mark). BOM adalah karakter Unicode khusus yang memiliki nomor kode
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
71, yang digunakan untuk membedakan big-endian dan little-endian. Untuk big-endian, BOM muncul sebagai
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
72 di penyimpanan. Untuk little-endian, BOM muncul sebagai
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
73. Unicode mencadangkan dua nomor kode ini untuk mencegahnya menabrak karakter lain
File teks Unicode dapat mengambil format ini
File UTF-8 selalu disimpan sebagai big endian. BOM tidak berperan. Namun, di beberapa sistem (khususnya Windows), BOM ditambahkan sebagai karakter pertama dalam file UTF-8 sebagai tanda tangan untuk mengidentifikasi file sebagai UTF-8 yang disandikan. Karakter BOM (
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
71) dikodekan dalam UTF-8 sebagai
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
77. Menambahkan BOM sebagai karakter pertama file tidak disarankan, karena dapat diinterpretasikan secara tidak benar di sistem lain. Anda dapat memiliki file UTF-8 tanpa BOM
Format File Teks
Pembatas Garis atau End-Of-Line (EOL). Terkadang, saat Anda menggunakan Windows NotePad untuk membuka file teks (dibuat di Unix atau Mac), semua baris digabungkan menjadi satu. Ini karena platform operasi yang berbeda menggunakan karakter yang berbeda sebagai pembatas garis yang disebut (atau end-of-line atau EOL). Dua karakter kontrol yang tidak dapat dicetak dilibatkan.
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
_42 (Line-Feed atau LF) dan
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
44 (Carriage-Return atau CR)
- Windows/DOS menggunakan
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
80 (CR+LF atau "1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
49") sebagai EOL - Unix dan Mac hanya menggunakan
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
_42 (LF atau "1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
47")
File Akhir (EOF). [MELAKUKAN]
Halaman Kode CMD Windows
Skema pengkodean karakter (charset) di Windows disebut codepage. Di shell CMD, Anda dapat mengeluarkan perintah
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
84 untuk menampilkan halaman kode saat ini, atau
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
85 untuk mengubah halaman kode
Perhatikan itu
- Codepage default 437 (digunakan dalam DOS asli) adalah kumpulan karakter 8-bit yang disebut Extended ASCII, yang berbeda dari Latin-1 untuk nomor kode di atas 127
- Codepage 1252 (Windows-1252), tidak persis sama dengan Latin-1. Ini menetapkan nomor kode 80H hingga 9FH untuk huruf dan tanda baca, seperti tanda kutip tunggal dan tanda kutip ganda. Masalah umum di browser yang menampilkan tanda kutip dan apostrof dalam tanda tanya atau kotak adalah karena halaman tersebut seharusnya adalah Windows-1252, tetapi diberi label yang salah sebagai ISO-8859-1
- Untuk internasionalisasi dan set karakter Cina. halaman kode 65001 untuk UTF8, halaman kode 1201 untuk UCS-2BE, halaman kode 1200 untuk UCS-2LE, halaman kode 936 untuk karakter Cina di GB2312, halaman kode 950 untuk karakter bahasa Cina di Big5
Set Karakter Cina
Unicode mendukung semua bahasa, termasuk bahasa Asia seperti Cina (karakter sederhana dan tradisional), Jepang dan Korea (secara kolektif disebut CJK). Ada lebih dari 20.000 karakter CJK di Unicode. Karakter Unicode sering dikodekan dalam skema UTF-8, yang sayangnya, membutuhkan 3 byte untuk setiap karakter CJK, bukan 2 byte dalam UCS-2 yang tidak dikodekan (UTF-16)
Lebih buruk lagi, ada juga berbagai rangkaian karakter Cina, yang tidak kompatibel dengan Unicode
- GB2312/GBK. untuk karakter Cina yang disederhanakan. GB2312 menggunakan 2 byte untuk setiap karakter Cina. Bit paling signifikan (MSB) dari kedua byte diatur ke 1 untuk hidup berdampingan dengan ASCII 7-bit dengan MSB 0. Ada sekitar 6700 karakter. GBK merupakan perpanjangan dari GB2312, yang menyertakan lebih banyak karakter serta karakter Cina tradisional
- BESAR5. untuk karakter cina tradisional BIG5 juga menggunakan 2 byte untuk setiap karakter cina. Bit paling signifikan dari kedua byte juga disetel ke 1. BIG5 tidak kompatibel dengan GBK, mis. e. , nomor kode yang sama diberikan untuk karakter yang berbeda
Misalnya, dunia dibuat lebih menarik dengan banyak standar ini
StandardCharactersCodesSimplifiedGB2312和谐BACD D0B3UCS-2和谐548C 8C10UTF-8和谐E5928C E8B090TraditionalBIG5和諧A94D BFD3UCS-2和諧548C 8AE7UTF-8和諧E5928C E8ABA7
Catatan untuk Pengguna CMD Windows. Untuk menampilkan karakter bahasa Mandarin dengan benar di shell CMD, Anda harus memilih halaman kode yang benar, mis. g. , 65001 untuk UTF8, 936 untuk GB2312/GBK, 950 untuk Big5, 1201 untuk UCS-2BE, 1200 untuk UCS-2LE, 437 untuk DOS asli. Anda dapat menggunakan perintah "
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
_86" untuk menampilkan halaman kode saat ini dan perintah "
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
87" untuk mengubah halaman kode. Anda juga harus memilih font yang dapat menampilkan karakter (mis. g. , Courier New, Consolas atau Lucida Console, BUKAN font Raster)
Menyusun Urutan (untuk Karakter Pemeringkatan)
String terdiri dari urutan karakter dalam huruf besar atau kecil, mis. g. ,
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
88,
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
89,
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
90. Dalam menyortir atau membandingkan string, jika kita mengurutkan karakter sesuai dengan nomor kode yang mendasarinya (mis. g. , US-ASCII) karakter demi karakter, urutan contohnya adalah
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
89,
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
88,
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
90 karena huruf besar memiliki nomor kode yang lebih kecil daripada huruf kecil. Ini tidak sesuai dengan apa yang disebut urutan kamus, di mana huruf besar dan kecil yang sama memiliki peringkat yang sama. Masalah umum lainnya dalam mengurutkan string adalah
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
94 (sepuluh) kadang-kadang diurutkan di depan
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
95 hingga
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
96
Oleh karena itu, dalam penyortiran atau perbandingan string, urutan yang disebut collating (atau collation) sering didefinisikan, yang menentukan peringkat untuk huruf (huruf besar, huruf kecil), angka, dan simbol khusus. Ada banyak urutan susunan yang tersedia. Anda sepenuhnya dapat memilih urutan penyusunan untuk memenuhi persyaratan spesifik aplikasi Anda. Beberapa urutan susunan kamus case-insensitive memiliki peringkat yang sama untuk huruf besar dan huruf kecil yang sama, mis. e. ,
To convert 261(base 10) to hexadecimal:
261/16 => quotient=16 remainder=5
16/16 => quotient=1 remainder=0
1/16 => quotient=0 remainder=1 (quotient=0 stop)
Hence, 261D = 105H (Collect the hex digits from the remainder in reverse order)
3,
To convert 261(base 10) to hexadecimal:
261/16 => quotient=16 remainder=5
16/16 => quotient=1 remainder=0
1/16 => quotient=0 remainder=1 (quotient=0 stop)
Hence, 261D = 105H (Collect the hex digits from the remainder in reverse order)
1 ⇒
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
99,
dn-1×rn-1 + dn-2×rn-2 + .. + d1×r1 + d0×r0
00 ⇒. ⇒
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
_06,
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
10. Beberapa urutan susunan kamus peka huruf besar-kecil menempatkan huruf besar sebelum pasangan huruf kecilnya, mis. e. ,
To convert 261(base 10) to hexadecimal:
261/16 => quotient=16 remainder=5
16/16 => quotient=1 remainder=0
1/16 => quotient=0 remainder=1 (quotient=0 stop)
Hence, 261D = 105H (Collect the hex digits from the remainder in reverse order)
3 ⇒
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
99 ⇒
dn-1×rn-1 + dn-2×rn-2 + .. + d1×r1 + d0×r0
05. ⇒
To convert 261(base 10) to hexadecimal:
261/16 => quotient=16 remainder=5
16/16 => quotient=1 remainder=0
1/16 => quotient=0 remainder=1 (quotient=0 stop)
Hence, 261D = 105H (Collect the hex digits from the remainder in reverse order)
_1 ⇒
dn-1×rn-1 + dn-2×rn-2 + .. + d1×r1 + d0×r0
07. Biasanya, ruang diurutkan sebelum angka
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
13 hingga
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
14, diikuti oleh abjad
Urutan penyusunan seringkali bergantung pada bahasa, karena bahasa yang berbeda menggunakan kumpulan karakter yang berbeda (mis. g. , á, é, a, α) dengan perintahnya masing-masing
Untuk Pemrogram Java - dn-1×rn-1 + dn-2×rn-2 + .. + d1×r1 + d0×r0
_10
JDK 1. 4 memperkenalkan paket
dn-1×rn-1 + dn-2×rn-2 + .. + d1×r1 + d0×r0
_11 baru untuk mendukung encoding/decoding karakter dari UCS-2 yang digunakan secara internal dalam program Java ke rangkaian karakter apa pun yang didukung yang digunakan oleh perangkat eksternal
Contoh. Program berikut mengkodekan beberapa teks Unicode dalam berbagai skema pengkodean, dan menampilkan kode Hex dari urutan byte yang dikodekan
Untuk Pemrogram Java - dn-1×rn-1 + dn-2×rn-2 + .. + d1×r1 + d0×r0
_12 dan dn-1×rn-1 + dn-2×rn-2 + .. + d1×r1 + d0×r0
13
Tipe data
dn-1×rn-1 + dn-2×rn-2 + .. + d1×r1 + d0×r0
_12 didasarkan pada standar Unicode 16-bit asli yang disebut UCS-2. Unicode sejak itu telah berevolusi menjadi 21 bit, dengan rentang kode dari U+0000 hingga U+10FFFF. Himpunan karakter dari U+0000 hingga U+FFFF dikenal sebagai Basic Multilingual Plane (BMP). Karakter di atas U+FFFF disebut karakter tambahan. Java 16-bit
dn-1×rn-1 + dn-2×rn-2 + .. + d1×r1 + d0×r0
_12 tidak dapat menampung karakter tambahan
Ingatlah bahwa dalam skema pengkodean UTF-16, karakter BMP menggunakan 2 byte. Itu sama dengan UCS-2. Karakter tambahan menggunakan 4 byte. dan membutuhkan sepasang nilai 16-bit, yang pertama dari kisaran pengganti tinggi, (
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
66), yang kedua dari kisaran pengganti rendah (
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
67)
Di Jawa,
dn-1×rn-1 + dn-2×rn-2 + .. + d1×r1 + d0×r0
13 adalah rangkaian karakter Unicode. Java, sebenarnya, menggunakan UTF-16 untuk
dn-1×rn-1 + dn-2×rn-2 + .. + d1×r1 + d0×r0
13 dan
dn-1×rn-1 + dn-2×rn-2 + .. + d1×r1 + d0×r0
20. Untuk karakter BMP sama dengan UCS-2. Untuk karakter tambahan, setiap karakter membutuhkan sepasang nilai
dn-1×rn-1 + dn-2×rn-2 + .. + d1×r1 + d0×r0
12
Metode Java yang menerima nilai
dn-1×rn-1 + dn-2×rn-2 + .. + d1×r1 + d0×r0
12 16-bit tidak mendukung karakter tambahan. Metode yang menerima nilai
dn-1×rn-1 + dn-2×rn-2 + .. + d1×r1 + d0×r0
23 32-bit mendukung semua karakter Unicode (dalam 21 bit yang lebih rendah), termasuk karakter tambahan
Ini dimaksudkan untuk menjadi diskusi akademis. Saya belum menemukan penggunaan karakter tambahan
Menampilkan Nilai Hex & Editor Hex
Kadang-kadang, Anda mungkin perlu menampilkan nilai hex dari sebuah file, terutama dalam menangani karakter Unicode. Hex Editor adalah alat praktis yang harus dimiliki oleh programmer yang baik di kotak peralatannya. Ada banyak freeware/shareware Hex Editor yang tersedia. Coba google "Editor Hex"
Saya menggunakan yang berikut ini
- NotePad ++ dengan Plug-in Hex Editor. Sumber terbuka dan gratis. Anda dapat beralih antara tampilan Hex dan tampilan Normal dengan menekan tombol "H".
- PSPad. Perangkat gratis. Anda dapat beralih ke tampilan Hex dengan memilih menu "Tampilan" dan memilih "Mode Edit Hex"
- TextPad. Shareware tanpa masa kedaluwarsa. Untuk melihat nilai Hex, Anda perlu "membuka" file dengan memilih format file "biner" (??)
- UltraEdit. Shareware, tidak gratis, uji coba 30 hari saja
Beri tahu saya jika Anda memiliki pilihan yang lebih baik, yang diluncurkan dengan cepat, mudah digunakan, dapat beralih antara Hex dan tampilan normal, gratis,
Program Java berikut dapat digunakan untuk menampilkan kode hex untuk Java Primitives (bilangan bulat, karakter, dan floating-point)
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
_3
Di Eclipse, Anda dapat melihat kode hex untuk variabel Java primitif bilangan bulat dalam mode debug sebagai berikut. Dalam perspektif debug, panel "Variabel" ⇒ Pilih "menu" (segitiga terbalik) ⇒ Java ⇒ Preferensi Java. ⇒ Opsi Tampilan Primitif ⇒ Centang "Tampilkan nilai heksadesimal (byte, short, char, int, long)"
Ringkasan - Mengapa Mengganggu Representasi Data?
Bilangan bulat
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
6, angka floating-point
dn-1×rn-1 + dn-2×rn-2 + .. + d1×r1 + d0×r0
25 simbol karakter
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
63, dan string
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
95 sama sekali berbeda di dalam memori komputer. Anda perlu mengetahui perbedaan untuk menulis program yang bagus dan berkinerja tinggi
- Dalam bilangan bulat bertanda 8-bit, bilangan bulat
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
6 direpresentasikan sebagai dn-1×rn-1 + dn-2×rn-2 + .. + d1×r1 + d0×r0
29 - Dalam 8-bit unsigned integer, bilangan bulat
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
6 direpresentasikan sebagai dn-1×rn-1 + dn-2×rn-2 + .. + d1×r1 + d0×r0
29 - Dalam bilangan bulat bertanda 16-bit, bilangan bulat
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
6 direpresentasikan sebagai dn-1×rn-1 + dn-2×rn-2 + .. + d1×r1 + d0×r0
33 - Dalam bilangan bulat bertanda 32-bit, bilangan bulat
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
6 direpresentasikan sebagai dn-1×rn-1 + dn-2×rn-2 + .. + d1×r1 + d0×r0
35dn-1×rn-1 + dn-2×rn-2 + .. + d1×r1 + d0×r0
35dn-1×rn-1 + dn-2×rn-2 + .. + d1×r1 + d0×r0
33 - Dalam representasi floating-point 32-bit, nomor
dn-1×rn-1 + dn-2×rn-2 + .. + d1×r1 + d0×r0
25 direpresentasikan sebagai dn-1×rn-1 + dn-2×rn-2 + .. + d1×r1 + d0×r0
39, i. e. , A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
_09, dn-1×rn-1 + dn-2×rn-2 + .. + d1×r1 + d0×r0
41, A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
08 - Dalam representasi floating-point 64-bit, angka
dn-1×rn-1 + dn-2×rn-2 + .. + d1×r1 + d0×r0
25 direpresentasikan sebagai dn-1×rn-1 + dn-2×rn-2 + .. + d1×r1 + d0×r0
44, i. e. , A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
09, dn-1×rn-1 + dn-2×rn-2 + .. + d1×r1 + d0×r0
46, A3C5H = 1010 0011 1100 0101B
102AH = 0001 0000 0010 1010B
08 - Dalam 8-bit Latin-1, simbol karakter
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
63 direpresentasikan sebagai dn-1×rn-1 + dn-2×rn-2 + .. + d1×r1 + d0×r0
49 (atau dn-1×rn-1 + dn-2×rn-2 + .. + d1×r1 + d0×r0
50) - Dalam UCS-2 16-bit, simbol karakter
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
63 direpresentasikan sebagai dn-1×rn-1 + dn-2×rn-2 + .. + d1×r1 + d0×r0
52 - Dalam UTF-8, simbol karakter
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
63 direpresentasikan sebagai dn-1×rn-1 + dn-2×rn-2 + .. + d1×r1 + d0×r0
49
Jika Anda "menambahkan" bilangan bulat bertanda 16-bit
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
6 dan karakter Latin-1
1001001010B = 0010 0100 1010B = 24AH
10001011001011B = 0010 0010 1100 1011B = 22CBH
63 atau string
dn-1×rn-1 + dn-2×rn-2 + .. + d1×r1 + d0×r0
57 Anda bisa mendapatkan kejutan
Latihan (Representasi Data)
Untuk kode 16-bit berikut
A3EH = A00H + 30H + EH = 10×16^2 + 3×16^1 + 14×16^0
_4
Berikan nilai mereka, jika mereka mewakili
- bilangan bulat 16-bit yang tidak ditandatangani;
- bilangan bulat bertanda 16-bit;
- dua bilangan bulat 8-bit yang tidak ditandatangani;
- dua bilangan bulat bertanda 8-bit;
- karakter Unicode 16-bit;
- dua karakter 8-bit ISO-8859-1
Jwb. (1)
dn-1×rn-1 + dn-2×rn-2 + .. + d1×r1 + d0×r0
_58,
dn-1×rn-1 + dn-2×rn-2 + .. + d1×r1 + d0×r0
59;
Bagaimana Anda mengonversi angka menjadi biner 8 bit dengan Python?
Dalam biner, Anda menggunakan kekuatan dua, yang berarti 8 pada dasarnya. (1(2^3)) + (0(2^2)) + (0(2^1)) + (0(2^0))= 8. Posisi 1 dan 0 menentukan pangkat yang akan dinaikkan menjadi 2. Dengan Python, Anda cukup menggunakan fungsi bin() untuk mengonversi dari nilai desimal ke nilai biner yang sesuai .
Bagaimana cara mengubah int menjadi biner Python?
Gunakan Python bin untuk Mengonversi Int ke Biner
.
Bagaimana cara mengubah int ke oktal dengan Python?
Fungsi oct() mengonversi bilangan bulat menjadi string oktal. String oktal dalam Python diawali dengan 0o.