注:此资料来源于参考答案。本人用LaTex打出。推荐使用第二种写法,大大减少LaTex的书写量。
1.证明二进制负数的补码等于反码加一
证明:
设二进制数x为n位,则有
x补=2n−x
x
补
=
2
n
−
x
x=(d0d2d3...dn−1)2
x
=
(
d
0
d
2
d
3
.
.
.
d
n
−
1
)
2
将x表示为十进制
x=d0⋅20+d1⋅21+⋯+dn−1⋅2n−1
x
=
d
0
⋅
2
0
+
d
1
⋅
2
1
+
⋯
+
d
n
−
1
⋅
2
n
−
1
其中
di∈{0,1}
d
i
∈
{
0
,
1
}
x反=(1−d0)⋅20+(1−d1)⋅21+⋯+(1−dn−1)⋅2n−1
x
反
=
(
1
−
d
0
)
⋅
2
0
+
(
1
−
d
1
)
⋅
2
1
+
⋯
+
(
1
−
d
n
−
1
)
⋅
2
n
−
1
x反+1=(1−d0)⋅20+(1−d1)⋅21+⋯+(1−dn−1)⋅2n−1+1=1+20+21+⋯+2n−1−(d0⋅20+⋯+dn−1⋅2n−1)=2n−x=x补
x
反
+
1
=
(
1
−
d
0
)
⋅
2
0
+
(
1
−
d
1
)
⋅
2
1
+
⋯
+
(
1
−
d
n
−
1
)
⋅
2
n
−
1
+
1
=
1
+
2
0
+
2
1
+
⋯
+
2
n
−
1
−
(
d
0
⋅
2
0
+
⋯
+
d
n
−
1
⋅
2
n
−
1
)
=
2
n
−
x
=
x
补
证毕。
另一种写法:
证明:
设二进制数x为n位,则有
x补=2n−x
x
补
=
2
n
−
x
x=(d0d2d3...dn−1)2
x
=
(
d
0
d
2
d
3
.
.
.
d
n
−
1
)
2
将x表示为十进制
x=∑n−1i=0di⋅2i
x
=
∑
i
=
0
n
−
1
d
i
⋅
2
i
其中
di∈{0,1}
d
i
∈
{
0
,
1
}
x反=∑n−1i=0(1−di)⋅2i
x
反
=
∑
i
=
0
n
−
1
(
1
−
d
i
)
⋅
2
i
x反+1=∑n−1i=0(1−di)⋅2i+1=∑n−1i=02i+1−∑n−1i=0di⋅2i=2n−x=x补
x
反
+
1
=
∑
i
=
0
n
−
1
(
1
−
d
i
)
⋅
2
i
+
1
=
∑
i
=
0
n
−
1
2
i
+
1
−
∑
i
=
0
n
−
1
d
i
⋅
2
i
=
2
n
−
x
=
x
补
证毕。
2.证明二进制从低位扩展到高位可以用最高位填充
即
x1=(x0x1…xn−1)2=x2=(x0x0…x0x1…xn−1)2
x
1
=
(
x
0
x
1
…
x
n
−
1
)
2
=
x
2
=
(
x
0
x
0
…
x
0
x
1
…
x
n
−
1
)
2
证明:
(1)当x为正数时,显然成立
(2)当x为负数时
x0=1
x
0
=
1
,有
x1=2n−x补n=2n−(x0⋅2n−1+⋯+xn−1⋅20)
x
1
=
2
n
−
x
补
n
=
2
n
−
(
x
0
⋅
2
n
−
1
+
⋯
+
x
n
−
1
⋅
2
0
)
x2=2m−x补m=2m−(x0⋅2m−1+x0⋅2m−2+⋯+x0⋅2n+x0⋅2n−1+x1⋅2n−2+⋯+xn−1⋅20)=2m−(2m−2n)−(x0⋅2n−1+⋯+xn−1⋅20)=2n−(x0⋅2n−1+⋯+xn−1⋅20)
x
2
=
2
m
−
x
补
m
=
2
m
−
(
x
0
⋅
2
m
−
1
+
x
0
⋅
2
m
−
2
+
⋯
+
x
0
⋅
2
n
+
x
0
⋅
2
n
−
1
+
x
1
⋅
2
n
−
2
+
⋯
+
x
n
−
1
⋅
2
0
)
=
2
m
−
(
2
m
−
2
n
)
−
(
x
0
⋅
2
n
−
1
+
⋯
+
x
n
−
1
⋅
2
0
)
=
2
n
−
(
x
0
⋅
2
n
−
1
+
⋯
+
x
n
−
1
⋅
2
0
)
∴x1=x2
∴
x
1
=
x
2
证毕。
另一种写法:
证明:
(1)当x为正数时,显然成立
(2)当x为负数时
x0=1
x
0
=
1
,有
x1=2n−x补n=2n−∑n−1i=0xi⋅2n−1−i
x
1
=
2
n
−
x
补
n
=
2
n
−
∑
i
=
0
n
−
1
x
i
⋅
2
n
−
1
−
i
x2=2m−x补m=2m−(∑m−1i=n2i+∑n−1i=0xi⋅2n−1−i)=2m−(2m−2n)−(∑n−1i=0xi⋅2n−1−i)=2n−(∑n−1i=0xi⋅2n−1−i)
x
2
=
2
m
−
x
补
m
=
2
m
−
(
∑
i
=
n
m
−
1
2
i
+
∑
i
=
0
n
−
1
x
i
⋅
2
n
−
1
−
i
)
=
2
m
−
(
2
m
−
2
n
)
−
(
∑
i
=
0
n
−
1
x
i
⋅
2
n
−
1
−
i
)
=
2
n
−
(
∑
i
=
0
n
−
1
x
i
⋅
2
n
−
1
−
i
)
∴x1=x2
∴
x
1
=
x
2
证毕。
3.证明二进制可以从最低位每三位转化为八进制
证明:
x=(dn−1⋯d0)2
x
=
(
d
n
−
1
⋯
d
0
)
2
将x表示为十进制:
x=∑n−1i=0di2i
x
=
∑
i
=
0
n
−
1
d
i
2
i
将x高位补零对齐到3的倍数:
x=∑3ki=0di2i,k=⌈n/3⌉
x
=
∑
i
=
0
3
k
d
i
2
i
,
k
=
⌈
n
/
3
⌉
x=∑ki=0(d3i23i+d3i+123i+1+d3i+223i+2)=∑ki=023i(d3i+d3i+1+d3i+2)=∑ki=0wi8i
x
=
∑
i
=
0
k
(
d
3
i
2
3
i
+
d
3
i
+
1
2
3
i
+
1
+
d
3
i
+
2
2
3
i
+
2
)
=
∑
i
=
0
k
2
3
i
(
d
3
i
+
d
3
i
+
1
+
d
3
i
+
2
)
=
∑
i
=
0
k
w
i
8
i
证毕。
源码
# 1.证明二进制负数的补码等于反码加一
证明:
设二进制数x为n位,则有
$x_补=2^n-x$
$x=(d_0d_2d_3...d_{n-1})_2$
将x表示为十进制
$x=d_0\cdot2^0+d_1\cdot2^1+\cdots+d_{n-1}\cdot2^{n-1}$
其中$d_i\in\{0,1\}$
$x_反=(1-d_0)\cdot2^0+(1-d_1)\cdot2^1+\cdots+(1-d_{n-1})\cdot2^{n-1}$
$x_反+1=(1-d_0)\cdot2^0+(1-d_1)\cdot2^1+\cdots+(1-d_{n-1})\cdot2^{n-1}+1\\=1+2^0+2^1+\cdots+2^{n-1}-(d_0\cdot2^0+\cdots+d_{n-1}\cdot2^{n-1})\\=2^n-x\\=x_补$
证毕。
另一种写法:
证明:
设二进制数x为n位,则有
$x_补=2^n-x$
$x=(d_0d_2d_3...d_{n-1})_2$
将x表示为十进制
$x=\sum_{i=0}^{n-1} d_i\cdot2^i$
其中$d_i\in\{0,1\}$
$x_反=\sum_{i=0}^{n-1} (1-d_i)\cdot2^i$
$x_反+1=\sum_{i=0}^{n-1} (1-d_i)\cdot2^i+1\\=\sum_{i=0}^{n-1}2^i+1-\sum_{i=0}^{n-1} d_i\cdot2^i\\=2^n-x\\=x_补$
证毕。
# 2.证明二进制从低位扩展到高位可以用最高位填充
即$x_1=(x_0x_1\ldots x_{n-1})_2=x_2=(x_0x_0\ldots x_0x_1\ldots x_{n-1})_2$
证明:
(1)当x为正数时,显然成立
(2)当x为负数时$x_0=1$,有
$x_1=2^n-{x_补}_n\\=2^n-(x_0\cdot2^{n-1}+\cdots+x_{n-1}\cdot2^0)$
$x_2=2^m-{x_补}_m\\=2^m-(x_0\cdot2^{m-1}+x_0\cdot2^{m-2}+\cdots+x_0\cdot2^n+x_0\cdot2^{n-1}+x_1\cdot2^{n-2}+\cdots+x_{n-1}\cdot2^0)\\=2^m-(2^m-2^n)-(x_0\cdot2^{n-1}+\cdots+x_{n-1}\cdot2^0)\\=2^n-(x_0\cdot2^{n-1}+\cdots+x_{n-1}\cdot2^0)$
$\therefore x_1=x_2$
证毕。
另一种写法:
证明:
(1)当x为正数时,显然成立
(2)当x为负数时$x_0=1$,有
$x_1=2^n-{x_补}_n\\=2^n-\sum_{i=0}^{n-1} x_i\cdot2^{n-1-i}$
$x_2=2^m-{x_补}_m\\=2^m-(\sum_{i=n}^{m-1} 2^i+\sum_{i=0}^{n-1} x_i\cdot2^{n-1-i})\\=2^m-(2^m-2^n)-(\sum_{i=0}^{n-1} x_i\cdot2^{n-1-i})\\=2^n-(\sum_{i=0}^{n-1} x_i\cdot2^{n-1-i})$
$\therefore x_1=x_2$
证毕。
# 3.证明二进制可以从最低位每三位转化为八进制
证明:
$x=(d_{n-1}\cdots d_0)_2$
将x表示为十进制:
$x=\sum_{i=0}^{n-1} d_i2^i$
将x高位补零对齐到3的倍数:
$x=\sum_{i=0}^{3k} d_i2^i,k=\lceil n/3\rceil$
$x=\sum_{i=0}^k (d_{3i}2^{3i}+d_{3i+1}2^{3i+1}+d_{3i+2}2^{3i+2})\\=\sum_{i=0}^k 2^{3i}(d_{3i}+d_{3i+1}+d_{3i+2})\\=\sum_{i=0}^k w_i8^i$
证毕。