Pages

Friday 14 December 2012

Language of the computer(Sign and unsigned numbers)


Language of the computer(Sign and unsigned numbers)
Numbers disimpan dalam computer hardware dengan menggunakan series of electronic signals.
Electronic signals ini sentiasa dianggap sebagai base 2 numbers.(Base 2 numbers dipanggil sebagai binary numbers.)
Semua maklumat terdiri daripada binary digits or bits. Bits mempunyai dua value dimana kita boleh menganggapnya sebagai tinggi atau rendah,betul atau salah,ataupun 1 atau 0.
Kami kira bits dalam sesuatu word daripada kanan ke kiri seperti di bawah:-
31 30 2928
27 262524
23 222120
19 18 1716
15 14 1312
11 10  9 8
7   6   5 4
3   2  1  0
0  0  0  0
0  0  0  0
0  0  0  0
0  0  0  0
0  0  0  0
0  0  0  0
0  0  0  0
0  0  0  0

Table: 32-bit wide.


Note: The phrase least significant bit adalah merujuk kepada right-most bit iaitu bit 0 ke atas, manakala phrase most significant bit adalah merujuk kepada left-most bit iaitu bit 31.

Hardware boleh dicipta untuk add,subtract,multiply dan juga divide binary bit patterns.
Sebenarnya, number(positive value) mempunyai infinite digits of 0s at the leftmost digits. Kalau number tidak boleh reperesents oleh rightmost bits, overflow akan berlaku. Semasa overflow belaku, ia adalah bergantung kepada programming language, operating system untuk menentukan apa yang patut dilakukan.

Computer program boleh mengira positive dan juga negative numbers, oleh itu kami perlulah mencarikan representation untuk membezakan positive numbers daripada negative number. Cara terbaik adalah dengan menambah separate sign.

Di bawah merupakan perbandingan antara Unsigned Binary Integers dan Signed Integers.
A. Unsigned Binary Integers
Formula untuk mengira:
-Linkungan: 0 to +2n – 1 (n = bit terakhir)
-Value(From the smallest to the largest): 0 sampai +4,294,967,295
Di bawah merupakan image bagi the  convention of unsigned binary number.






Note: 32-bit binary numbers boleh dikira dengan menggunakan bit value multiply with power of 2(2x dimana x merupakan xth bit of the numbers.)

B. Signed Binary Integers
Formula untuk mengira:
-Linkungan: –2n – 1 to +2n – 1 – 1 (n = bit terakhir)
-Value(From the smallest to the largest): –2,147,483,648 to +2,147,483,647

Di bawah merupakan image bagi convention of the signed binary number dimana kita memanggil sebagai 2’s complement representation.












Bagi signed binary number, bahagian positive numbers menggunakan cara representation yang sama seperti biasa, iaitu from 0 to 2,147,483,64710(231-1). Bits yang seterusnya adalah the most negative number(-2,147,483,64810).

2’s complement representation mempunyai kebaikan iaitu semua negative numbers mempunyai 1 dalam most significant bit. Biasanya, hardware hanya menguji bits dan menentukan ia adalah positive ataupun negative(number 0 dianggap sebagai positive). Bits ini dikenali sebagai sign bits.

Di dalam Signed Binary Integers, sign bit multiplied oleh -231(most significant bit) dan bits yang lain akan multiplied oleh positive versions base values masing-masing.

-Most-negative:           1000 0000 … 0000
-Most-positive:            0111 1111 … 1111


Overflow berlaku apabila leftmost bit bagi binary bits pattern tidak sama dengan infinite number of digits kepada kiri. Ini adalah terbukti sign bits adalah salah(0 wujud apabila number adalah negative ataupun 1 wujud apabila number adalah positive ).

Terdapat 2 shortcut yang berguna untuk mengira 2’s complement numbers.Shortcut yang pertama adalah cara yang cepat untuk negate 2’s complement numbers.Kita hanya perlu tukar semua 0 kepada 1 dan semua 1 kepada 0, selepas itu menambah 1 kepada value yang kita dapat.

Example: Sign Negation
Question: Negate 1310 and then check the result by negating -1310.
1310 = 0000 0000 0000 0000 0000 0000 0000 11012
Negating number dengan menukarkan semua 0 kepada 1 dan semua 1 kepada 0, dan terakhir sekali menambah 1 kepada result.
   1111 1111 1111 1111 1111 1111 1111 00102+12
= 1111 1111 1111 1111 1111 1111 1111 00112
=-1310
Sebaliknya, check the result by negating -1310,
-1310 = 1111 1111 1111 1111 1111 1111 1111 00112
Negating number dengan menukarkan semua 0 kepada 1 dan semua 1 kepada 0, dan terakhir sekali menambah 1 kepada result.
   0000 0000 0000 0000 0000 0000 0000 11002+12
= 0000 0000 0000 0000 0000 0000 0000 11012
=-1310
Shortcut yang lain dipanggil sebagai
Example: Sign Extension Shortcut
Question: Convert 16 bits binary of 1310 and -1310 to 32-bit binary numbers.
16-bit binary version bagi number 13 adalah
1310 = 0000 0000 0000 11012
Bagi menjadikan bits binary of 1310 kepada 32-bit binary numbers, tambah lagi 16 copies di most significant bit dengan menggunakan bit 0s(positive value).
→1310 = 0000 0000 0000 0000 0000 0000 0000 11012
Negate 16-bit version of 210,
 0000 0000 0000 11012  1111 1111 1111 00102 + 12
                                                    1111 1111 1111 00112
Bagi menjadikan bits binary of -1310 kepada 32-bit binary numbers, tambah lagi 16 copies di most significant bit dengan menggunakan bit 1s(negative value).
Jawapan:
-1310 = 1111 1111 1111 1111 1111 1111 1111 00112

Method ini dapat digunakan kerana positive 2’s complement number mempunyai infinite number of 0s di most significant bit dan sebaliknya negative 2’s complement number mempunyai infinite number of 1s di most significant bit.

The binary bit pattern representing a number hides leading bits to fit the width of the hardware; sign extension simply restores some of them.

Written By: SIM FU CHENG(B031210069)








0 comments:

Post a Comment