資料寬度和邏輯運算
阿新 • • 發佈:2021-11-18
資料寬度
計算機資料
無符號數:正數
有符號數:正數、負數
當資料寬度為32位時:
無符號數00000000-FFFFFFFF
有符號數00000000-7FFFFFFF(正數)
80000000-FFFFFFFF(負數)
也就是 0正 1負
幾個重要的計量單位
BYTE 位元組 8位 1位元組
WORD 位元組 16位 2位元組
DWORD 雙字 32位 4位元組
邏輯運算
或運算(or|)
只要有一個為1則結果 為1
與運算(and&)
兩個數都是1才為1
異或運算(xor^)
相同為0 不同為1
非運算(not!)
取反 1取反就是0 0取反就是1
cpu如何計算2+3?
X:0010
y:0011
先異或:
0010
xor 0011
0001
R(暫存器中):0001
異或完以後要判斷是否運算結束
將兩個數進行與運算然後左移一位
0010
and 0011
0010
0010<<1 ==0100
如果結果全為0,結果則為我們所要的結果
否則,把上面的異或得到的值賦值到X中
把左移後的結果賦值到Y
X:0001
Y:0100
重複以上的操作(先異或,在與運算)
先異或
0001
xor 0100
0101
R:0101
在將兩個數進行與運算 然後左移動一位
0001
and 0100
0000
左移完結果全是0,結果為我們所需要的
最終結果為0101 = 5
CPU如何計算2-3?
X:0010
Y:1101( 3的二進位制為0011取反1100加一為補碼1101)
先異或:
0010
xor 1101
1111
R:1111
兩個數再進行與運算,然後左移一位
0010
and 1101
----------
0000
0000<<1=0000
如果權為0,結果為我們所要的結果
最終結果為1111= -1
在計算機中
正數是直接用原碼錶示的
負數時以其正值的補碼形式表示的
下面資料以資料寬度為8為例
1的原碼:0000 0001
1的反碼:1111 1110
1的補碼:1111 1111
同理可得:
8的原碼:0000 1000
8的反碼:1111 0111
8的補碼:1111 1000
即1111 = -1