汇编预备知识(一)
數(shù)制:
十進制:0~9?逢十進一,借一當十
二進制:0~1?逢二進一,借一當二
十六進制:0~9和A~F?逢十六進一,借一當十六
?
數(shù)值轉換
二進制、十六禁止->十進制
把權值相乘再求累加和就可以得到十進制。
(1101.11)2=1*2^3+1*2^2+1*2^0+1*2^(-1)+1*2^(-2)=(13.75)10
(E5A)16=14*16^2+5*16^1+10*16^0=(3674)10
?
十進制整數(shù)->二進制
方法:除二取余
如:N=(14)10=(110)2
過程為:
14/2=7?余數(shù)=0?---?D0
7/2=3?余數(shù)=1?---?D1
3/2=1?余數(shù)=1?---?D2
1/2=0?余數(shù)=1?---?D3
所以:N=D3D2D1D0=(1110)2
?
十進制純小數(shù)->二進制
方法:乘二取整,直到小數(shù)部分為0
如:N=(0.8125)10=(0.1101)2
過程為:
0.8125*2=1.625?整數(shù)部分=1??---?D1
0.625*2=1.25?整數(shù)部分=1?---?D2
0.25*2=0.5?整數(shù)部分=0?---?D3
0.5*2=1.0?整數(shù)部分=1?---?D4
所以,N=(0.1101)2
?
二進制->十六進制
方法:以小數(shù)點左右散開,4位二進制為一組,不足4位補0,每組用等值的十六進制代替。
如:(1101110.11)2=(0110?1110.1100)2=(6E.C)16
補充:在匯編語言中十六進制后綴H表示
所以(1A2B)16可寫成1A2BH
?
十六進制->二進制
方法:每一位用等值的二進制代替
如:(17E.58)16=(0001?0111?1110.0101?1000)2=(01111110.01011)2
?
進制說完了,下面說機器數(shù)的原碼、反碼和補碼
數(shù)X的原碼記作[X]原,反碼記作[X]反,補碼記作[X]補
下面全是討論有符號數(shù)(最高位為0表示正數(shù),最高位為1表示負數(shù))
例如,當機器字長n=8時:
X=+5=+0000101
則可知:
[X]原=00000101
[X]反=00000101
[X]補=00000101
所以當一個數(shù)為正數(shù)的時候:原碼=反碼=補碼
下面再舉個列子:
Y=-5=-0000101
則可知:
[Y]原=10000101
[Y]反=11111010
[Y]補=11111011
所以當一個數(shù)為正數(shù)的時候:
反碼:符號位不變,其他位取反。
補碼:反碼+1。
?
注意:
當Z=0時
Z=+0000000
Z=-0000000
都可以,他們的補碼都為00000000
由于補碼的機器數(shù)更適合運算,為此計算機中負數(shù)都用補碼表示。
?
這節(jié)就到這里,下一節(jié)說明補碼的運算和字符編碼
總結
- 上一篇: C/C++判断操作系统(Win10,Wi
- 下一篇: Java高级语法笔记-文本文件的按行读取