2.2 整数表示
符号 |
类型 |
含义 |
B2Tw |
函数 |
二进制转补码 |
B2Uw |
函数 |
二进制转无符号数 |
U2Bw |
函数 |
无符号数转二进制 |
U2Tw |
函数 |
无符号数转补码 |
T2Bw |
函数 |
补码转二进制 |
T2Uw |
函数 |
补码转无符号数 |
TMinw |
常数 |
最小补码值 |
TMaxw |
常数 |
最大补码值 |
UMaxw |
常数 |
最大无符号数 |
+wt |
常数 |
补码加法 |
+wu |
常数 |
无符号数加法 |
∗wt |
常数 |
补码乘法 |
∗wu |
常数 |
无符号数乘法 |
−wt |
常数 |
补码取反 |
−wu |
常数 |
无符号数取反 |
2.2.2 无符号数(Binary to Unsigned)编码
原理:无符号数编码定义
x
=[xw−1,xw−2,...,x0]
B2Uw(x
)=˙i=0∑w−1xi2i(2.1)
e.g.:B2U4([0110])=0∗23+1∗22+1∗21+0∗20=6(2.2)
tips:UMaxw=˙i=0∑w−12i=2w−1
2.2.3 补码(Binary to Two’s-complement)编码
原理:补码编码定义
x
=[xw−1,xw−2,...,x0]B2Tw(x
)=˙−xw−12w−1+i=0∑w−2xi2i(2.3)e.g.:B2T4([1110])=1∗23+1∗22+1∗21+0∗20=−2(2.4)TMinw=˙−2w−1TMaxw=˙i=0∑w−22i=2w−1−1tips:∣TMin∣=∣TMax∣+1extend:反码(Ones′Complement):B2Ow(x
)=˙−xw−1(2w−1−1)+i=0∑w−2xi2i原码(Signed−Magnitude):B2Sw(x
)=˙(−1)xw−1∗(i=0∑w−2xi2i)
2.2.4 有符号数和无符号数之间的转换
原理:补码转换为无符号数
Tminw≤x≤Tmaxw:T2Uw(x)=⎩⎨⎧x+2w,x,x<0x≥0(2.5)e.g.:T2U16(−12345)=−12345+216=53191T2Uw(−1)=−1+2w=UMaxw
推导:补码转换为无符号数
B2Uw(T2Bw(x))=T2Uw(x)=x+xw−12w(2.6)e.g.:
原理:无符号数转换为补码
0≤u≤UMaxw:U2Tw(u)=⎩⎨⎧u,u−2w,u≤TMaxwu>TMaxw(2.7)
推导:无符号数转换为补码
u
=U2Bw(u)=U2Tw(u)结合公式(2.1)和(2.3)有U2Tw(u)=−uw−12w+u(2.8)conclusion:0≤x≤TmaxwT2Uw(x)=x=U2Twx>0∣∣x>TmaxwT2uw(x)=x±2wT2Uw(TMinw)=−2w−1+2w=2w−1
2.2.6 扩展一个数字的位表示
原理:无符号数的零扩展
定义宽度为w的位向量u
=[uw−1,uw−2,...,u0]和宽度为w′的位向量u
′=[0,0,uw−1,uw−2...,u0],其中w′>w。则B2Uw(u
)=B2Uw′(u
′)。
原理:补码数的符号扩展
定义宽度为w的位向量x
=[xw−1,xw−2,...,x0]和宽度为w的位向量x
′=[xw−1,,xw−1,xw−2,...,x0],其中w′>w。则B2Tw(x
)=B2Tw′(x
)。
推导:补码数值的符号扩展
令w′=w+k我们要证明B2Tw+k([xw−1,...,xw−1,xw−1,xw−2,...,x0])=B2Tw([xw−1,xw−2,...,x0])对k进行归纳证明,只要扩展一位保持这种属性就可以证明以上等式成立B2Tw+1([xw−1,xw−1,xw−2,...,x0])=B2Tw([xw−1,xw−2,...,x0])通过公式(2.3)左边展开B2Tw+1([xw−1,xw−1,xw−2,...,x0])=−xw−12w+i=0∑w−1xi2i=−xw−12w+xw−12w−1+i=0∑w−2xi2i=−xw−12w−1+i=0∑w−2xi2i=B2Tw([xw−1,xw−2,...,x0])
2.2.7 截断数字
原理:截断无符号数