二进制若干问题证明

本文详细阐述了二进制数的几种重要运算方法,包括负数的补码等于反码加一的证明、二进制数高位扩展时最高位填充的原则,以及二进制数转换为八进制数的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注:此资料来源于参考答案。本人用LaTex打出。推荐使用第二种写法,大大减少LaTex的书写量。

1.证明二进制负数的补码等于反码加一

证明:
设二进制数x为n位,则有
x=2nxx补=2n−x
x=(d0d2d3...dn1)2x=(d0d2d3...dn−1)2
将x表示为十进制
x=d020+d121++dn12n1x=d0⋅20+d1⋅21+⋯+dn−1⋅2n−1
其中di{0,1}di∈{0,1}
x=(1d0)20+(1d1)21++(1dn1)2n1x反=(1−d0)⋅20+(1−d1)⋅21+⋯+(1−dn−1)⋅2n−1
x+1=(1d0)20+(1d1)21++(1dn1)2n1+1=1+20+21++2n1(d020++dn12n1)=2nx=xx反+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为n位,则有
x=2nxx补=2n−x
x=(d0d2d3...dn1)2x=(d0d2d3...dn−1)2
将x表示为十进制
x=n1i=0di2ix=∑i=0n−1di⋅2i
其中di{0,1}di∈{0,1}
x=n1i=0(1di)2ix反=∑i=0n−1(1−di)⋅2i
x+1=n1i=0(1di)2i+1=n1i=02i+1n1i=0di2i=2nx=xx反+1=∑i=0n−1(1−di)⋅2i+1=∑i=0n−12i+1−∑i=0n−1di⋅2i=2n−x=x补
证毕。

2.证明二进制从低位扩展到高位可以用最高位填充

x1=(x0x1xn1)2=x2=(x0x0x0x1xn1)2x1=(x0x1…xn−1)2=x2=(x0x0…x0x1…xn−1)2
证明:
(1)当x为正数时,显然成立
(2)当x为负数时x0=1x0=1,有
x1=2nxn=2n(x02n1++xn120)x1=2n−x补n=2n−(x0⋅2n−1+⋯+xn−1⋅20)
x2=2mxm=2m(x02m1+x02m2++x02n+x02n1+x12n2++xn120)=2m(2m2n)(x02n1++xn120)=2n(x02n1++xn120)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)
x1=x2∴x1=x2
证毕。

另一种写法:
证明:
(1)当x为正数时,显然成立
(2)当x为负数时x0=1x0=1,有
x1=2nxn=2nn1i=0xi2n1ix1=2n−x补n=2n−∑i=0n−1xi⋅2n−1−i
x2=2mxm=2m(m1i=n2i+n1i=0xi2n1i)=2m(2m2n)(n1i=0xi2n1i)=2n(n1i=0xi2n1i)x2=2m−x补m=2m−(∑i=nm−12i+∑i=0n−1xi⋅2n−1−i)=2m−(2m−2n)−(∑i=0n−1xi⋅2n−1−i)=2n−(∑i=0n−1xi⋅2n−1−i)
x1=x2∴x1=x2
证毕。

3.证明二进制可以从最低位每三位转化为八进制

证明:
x=(dn1d0)2x=(dn−1⋯d0)2
将x表示为十进制:
x=n1i=0di2ix=∑i=0n−1di2i
将x高位补零对齐到3的倍数:
x=3ki=0di2i,k=n/3x=∑i=03kdi2i,k=⌈n/3⌉
x=ki=0(d3i23i+d3i+123i+1+d3i+223i+2)=ki=023i(d3i+d3i+1+d3i+2)=ki=0wi8ix=∑i=0k(d3i23i+d3i+123i+1+d3i+223i+2)=∑i=0k23i(d3i+d3i+1+d3i+2)=∑i=0kwi8i
证毕。

源码

# 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$
证毕。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值