電腦儲存資料是用二進位的方式, 也就是binary. 最左邊的bit若為
0則代表+,若為1代表- 但是正負符號的要如何儲存在記憶體呢?
我們可以使用2的補數系統來儲存.以下列出如何把一個負整
數轉化為2的補數的表示法.
我們以數字-36為例:
首先+36的二進位表示法為: 00100100
然後把每一個bit的0-->1,1--->0,變成11011011
然後從右端加入1個bit,變成 11011100
<2的補數轉回負整數>
也是一樣先轉化0為1,1為0. 然後加1.
ex: 1111 1111
--->0000 0000
--->0000 0001
---> -1
<2的補數運算>
1.兩個正整數相加: 3+8=11
0000 0011 3
+0000 1000 8
-------------
0000 1011 11
2.兩個正整數相減: 8-3=8+(-3)=5
-3
0000 0000 0000 0011
-->1111 1111 1111 1100
-->1111 1111 1111 1101
so
0000 0000 0000 1000 (8)
+ 1111 1111 1111 1101 (-3)
----------------------------
0000 0000 0000 0101
3.小正整數減大正整數: 3-8=3+(-8)=-5
-8
-->000 1000
-->1111 0111
-->1111 1000
so
0000 0011
+ 1111 1000
---------------
1111 1011
由以下逆推得知1111 1011為-5
-->0000 0100
-->0000 0101= 5
網頁
BloggerAds 廣告
標籤
- Java (96)
- Android (27)
- 演算法 (21)
- c++ (19)
- JavaScript (7)
- OpenMp (6)
- Design Pattern (4)
- 日文歌曲 (4)
- 資料結構 (4)
- Foundation Knowledge Of Programming (3)
- QUT (2)
- CodingHomeWork (1)
- Database (1)
- 英文歌詞 (1)
搜尋此網誌
我的網誌清單
標籤
日文歌曲
(4)
股市
(7)
股票
(9)
英文歌詞
(1)
時事
(1)
硬體(hardware)
(1)
資料結構
(4)
演算法
(21)
數學(Math)
(4)
ACM
(3)
ajax
(7)
algorithms
(1)
Android
(27)
Blog Notes(部落格記事)
(6)
C
(9)
c++
(19)
CodingHomeWork
(1)
Database
(1)
Design Pattern
(4)
Foundation Knowledge Of Programming
(3)
GWT
(1)
How
(2)
J2EE
(1)
Java
(96)
Java語言
(4)
JavaScript
(7)
Leetcode
(4)
LOL
(1)
OpenMp
(6)
QUT
(2)
Uva
(2)
Yahoo知識問答
(11)
沒有留言:
張貼留言