符号扩展(sign extension)的证明

“For example, if six bits are used to represent the number “00 1010”
(decimal positive 10) and the sign extend operation increases the word
length to 16 bits, then the new representation is simply “0000 0000
0000 1010”. Thus, both the value and the fact that the value was
positive are maintained. If ten bits are used to represent the value
“11 1111 0001” (decimal negative 15) using two’s complement, and this
is sign extended to 16 bits, the new representation is “1111 1111 1111
0001”. Thus, by padding the left side with ones, the negative sign and
the value of the original number are maintained. ”
引用块内容

——维基百科
简单的说,符号扩展就是低位数转高位数。而我们只需要在低位数的左边补上低位数的符号位,直到数字位数达到要求,如:
“00 1010” (6位正10) 转 “0000 0000 0000 1010”(16位正10)
“11 1111 0001” (10位负15)转”1111 1111 1111 0001”(16位负15)

下面给出数学证明:

令I为k位正二进制数,m > k, ai 为 0或1.

1.

I=k0ai2i
=0+k0ai2i
=(k+1)m02i+k0ai2i

可以看出,当 I为正数,只要在其左边补0直到达到要求的位数。

2.

为了方便,这里从高位转到低位来证。

((k+1)m02i+I)
=((k+1)m02i+k0ai2i)
=(k+1)m(10)2i+k0(1ai)2i+1
=(k+1)m12i+(k0ai2i)
=(k+1)m12i+(I)

倒过来则有:
(k+1)m12i+(I)=((k+1)m02i+I)

显然,当低位为负数时候,只需要在其左边补0直到位数达到要求。

证毕。

你可能感兴趣的:(note)