next up previous contents index
Next: การทำ Sign Extension Up: การจัดการกับเลขบวก ลบ ในคอมพิวเตอร์ Previous: เปรียบเทียบระบบเลข Signed และ Unsigned   Contents   Index

แปลงค่าระหว่างบวกลบ

ทำการแปลงค่า $2_{ten}$ ให้เป็น $-2_{tem}$ และตรวจสอบผลลัพธ์

$2_{ten} = 0000 0000 0000 0000 0000 0000 0000 0010$

ทำการแปลงค่า โดย Invert บิต และบวก 1

                   1111 1111 1111 1111 1111 1111 1111 1101 
              +                                          1
                 _________________________________________
              =    1111 1111 1111 1111 1111 1111 1111 1110
              =  -2

จากนั้นทำย้อนกลับ

                   1111 1111 1111 1111 1111 1111 1111 1110

ทำการแปลงค่า โดย Invert บิต และบวก 1

                   0000 0000 0000 0000 0000 0000 0000 0001 
              +                                          1
                 _________________________________________
              =    0000 0000 0000 0000 0000 0000 0000 0010
              =  2

วิธีการต่อมา เราสามารถแปลงค่าไบนารี่ $n$ บิต ไปเป็นค่าไบนารี่ที่มีขนาดมากกว่า $n$ บิต ตัวอย่างเช่นคำสั่งในชุดของ i-type ที่มีค่าต่างๆ เช่น ค่าคงที่ ขนาด 16 บิต ที่แสดงค่า $-32,768_{ten}$ $(-2^{15})$ ถึง $32,768_{ten}$ $(2^{15}-1)$ ในการทำการคำนวณในคอมพิวเตอร์ MIPS จะต้องทำการแปลงค่าจาก 16 บิต ให้เป็น 32 บิต โดยการนำค่า Sign bit ที่เป็น Most Significant Bit ของค่าที่น้อยกว่า และนำมาเป็นค่าของบิตที่เหลือในช่องที่ทำการขยายบิตออกมาเป็น Word ใหม่ วิธีนี้เรียกว่า Sign Extension



Vara Varavithya 2006-11-06