PC_机器数_定点负数的原码_补码_反码在结构上的关系
预备知识
模2范畴内的取反
-
KaTeX parse error: Undefined control sequence: \set at position 27: …,我们有规律: \\ y\in\̲s̲e̲t̲{0,1} \\ 1-y=\b…
-
KaTeX parse error: Undefined control sequence: \set at position 27: …,我们有规律: \\ y\in\̲s̲e̲t̲{0,1} \\ 1+y= \…
-
例 如 : 真 值 x < 0 原 码 T ( x ) = 1. x 1 x 2 ⋯ x n ( 小 数 点 前 面 的 1 表 示 符 号 位 为 负 号 ) 反 码 A ( x ) = 1. x 1 ‾ x 2 ‾ ⋯ x n ‾ 补 码 C ( x ) = A ( x ) + 2 − n = 1. x 1 ‾ x 2 ‾ ⋯ x n ‾ + 2 − n 例如:真值x<0 \\原码T(x)=1.x_1x_2\cdots{x_n} \\(小数点前面的1表示符号位为负号) \\反码A(x)=1.\overline{x_1}\ \overline{x_2}\cdots{\overline{x_n}} \\补码C(x)=A(x)+2^{-n}=1.\overline{x_1}\ \overline{x_2}\cdots{\overline{x_n}}+2^{-n} 例如:真值x<0原码T(x)=1.x1x2⋯xn(小数点前面的1表示符号位为负号)反码A(x)=1.x1 x2⋯xn补码C(x)=A(x)+2−n=1.x1 x2⋯xn+2−n
-
KaTeX parse error: Undefined control sequence: \set at position 228: …line{x_m};(m\in\̲s̲e̲t̲{1,\cdots,n}) \…
-
例 如 : A ( x ) = 0.1111 C ( x ) = A ( x ) + 2 − 4 = 0.1111 + 0.0001 = 1.0000 可 见 x 1 ⋯ x 4 所 有 b i t 看 起 来 都 被 取 反 了 ( 最 极 端 的 进 位 连 锁 反 应 ) 此 处 m = 1 例如:A(x)=0.1111 \\C(x)=A(x)+2^{-4}=0.1111+0.0001=1.0000 \\可见x_1\cdots{x_4}所有bit看起来都被取反了(最极端的进位连锁反应) \\此处m=1 例如:A(x)=0.1111C(x)=A(x)+2−4=0.1111+0.0001=1.0000可见x1⋯x4所有bit看起来都被取反了(最极端的进位连锁反应)此处m=1
-
又 比 如 T ( x ) = 0.01100 A ( x ) = 0.10011 C ( x ) = A ( x ) + 2 − 5 = 0.10011 + 0.00001 = 0.10100 此 处 m = 3 记 C ( x ) = 0. x 1 x 2 x 3 x 4 x 5 可 以 看 到 x 的 补 码 C ( x ) 的 x 1 x 2 位 置 和 x 的 原 码 x 1 x m − 1 位 置 的 数 码 一 致 ( x 1 ⋯ x m − 1 ) ( m = 3 ) x m ⋯ x n 和 x 的 原 码 的 x m ⋯ x n 是 一 致 的 ( m = 3 , n = 5 ) 又比如 T(x)=0.01100 \\ A(x)=0.10011 \\ C(x)=A(x)+2^{-5}=0.10011+0.00001=0.10100 \\此处m=3 \\记C(x)=0.x_1x_2x_3x_4x_5 \\可以看到x的补码C(x)的x_1x_2位置和x的原码 \\x_1x_{m-1}位置的数码一致(x_1\cdots{x_{m-1}})(m=3) \\x_m\cdots{x_n}和x的原码的x_m\cdots{x_n}是一致的(m=3,n=5) 又比如T(x)=0.01100A(x)=0.10011C(x)=A(x)+2−5=0.10011+0.00001=0.10100此处m=3记C(x)=0.x1x2x3x4x5可以看到x的补码C(x)的x1x2位置和x的原码x1xm−1位置的数码一致(x1⋯xm−1)(m=3)xm⋯xn和x的原码的xm⋯xn是一致的(m=3,n=5)
-
证明二进制补码规律
-
用 C ( x ) 表 示 x 的 补 码 ; 用C(x)表示x的补码; 用C(x)表示x的补码;
-
证 明 C ( − x ) = − C ( x ) 证明C(-x)=-C(x) 证明C(−x)=−C(x)
-
当 x > 0 当x>0 当x>0
-
KaTeX parse error: Undefined control sequence: \set at position 579: …ine{x_i}(x_i\in\̲s̲e̲t̲{0,1}) \end{ali…
- 由 于 二 进 制 ( 模 2 ) , x + 2 = 2 + x ≡ x m o d 2 ; − C ( x ) = − x = − 0. x 1 x 2 ⋯ x n ≡ 2 − 0. x 1 x 2 ⋯ x n ( m o d 2 ) = 1 + ( 1 − 0. x 1 x 2 ⋯ x n ) = 1 + 0. x 1 ‾ x 2 ‾ ⋯ x n ‾ + 2 − n = 1. x 1 ‾ x 2 ‾ ⋯ x n ‾ + 2 − n 可 见 C ( − x ) = − C ( x ) = 1. x 1 ‾ x 2 ‾ ⋯ x n ‾ + 2 − n 由于二进制(模2),x+2=2+x\equiv x\mod{2}; \\-C(x)=-x=\ -0.x_1x_2\cdots{x_n} \equiv{2-0.x_1x_2\cdots{x_n}}(\mod{2}) \\=1+(1-0.x_1x_2\cdots{x_n}) \\=1+0.\overline{x_1}\ \overline{x_2}\cdots{\overline{x_n}}+2^{-n} \\=1.\overline{x_1}\ \overline{x_2}\cdots{\overline{x_n}}+2^{-n} \\\\ 可见C(-x)=-C(x)=1.\overline{x_1}\ \overline{x_2}\cdots{\overline{x_n}}+2^{-n} 由于二进制(模2),x+2=2+x≡xmod2;−C(x)=−x= −0.x1x2⋯xn≡2−0.x1x2⋯xn(mod2)=1+(1−0.x1x2⋯xn)=1+0.x1 x2⋯xn+2−n=1.x1 x2⋯xn+2−n可见C(−x)=−C(x)=1.x1 x2⋯xn+2−n
-
类似的可以证明 x < 0 x<0 x<0的情况
-
-
-
模k同余
- x ≡ y m o d k 或 写 作 : x ≡ y ( m o d k ) 表 达 的 是 : ( x − y ) % k = 0 ( 这 不 同 于 : x % k = y % k , 比 如 4.1 − 2.1 % ≡ 2 ( m o d 2 ) ) x\equiv{y}\mod{k} \\或写作:x\equiv{y}(\mathrm{mod}\ k) \\表达的是: (x-y)\%k=0 \\(这不同于:x\%k=y\%k,比如4.1-2.1\%\equiv2(\mathrm{mod}\ 2)) x≡ymodk或写作:x≡y(mod k)表达的是:(x−y)%k=0(这不同于:x%k=y%k,比如4.1−2.1%≡2(mod 2))
🎈负数的补码与原码和反码在二进制串的结构上的关系
-
补码的左右移位的填补规则依赖于如下规律
-
下面仅讨论定点小数的情况,整数的情况手法类似,结论适用
-
对于 x < 0 x<0 x<0;
-
机器字长为n+1;符号位占走1位,有n位留给数值位
-
原码 T ( x ) = 1. x 1 x 2 ⋯ x m ⋯ x n T(x)=1.x_1x_2\cdots{x_m}\cdots{x_n} T(x)=1.x1x2⋯xm⋯xn
-
假设从低位到高位观察T(x)的小数部分,第一个值为1的位值出现在 x m x_m xm这个位置上
-
换句话说,如果没有精度/机器字长补齐要求,那么 x m + 1 ⋯ x n x_{m+1}\cdots{x_n} xm+1⋯xn这部分的小数位都是0,它们可以不写
-
-
反 码 C 1 ( x ) = 1. x 1 ‾ x 2 ‾ ⋯ x m ‾ ⋯ x n ‾ 反码C_1(x)=1.\overline{x_1}\ \overline{x_2} \cdots{\overline{x_m}}\cdots{\overline{x_n}\ } 反码C1(x)=1.x1 x2⋯xm⋯xn
- 1. x 1 ‾ x 2 ‾ ⋯ x m ‾ ⋯ x n ‾ = 1. x 1 ‾ x 2 ‾ ⋯ x m − 1 ‾ 0 ▲ 1 ⋯ 11 ⏟ x m + 1 ‾ ⋯ x n ‾ 1.\overline{x_1}\ \overline{x_2} \cdots{\overline{x_m}}\cdots{\overline{x_n}\ } =1.\overline{x_1}\ \overline{x_2} \cdots{\overline{x_{m-1}}}\underset\blacktriangle{0} \underbrace{1\cdots{11}}_{\overline{x_{m+1}}\cdots\overline{x_n}} 1.x1 x2⋯xm⋯xn =1.x1 x2⋯xm−1▲0xm+1⋯xn 1⋯11
-
补码 C ( x ) = c 0 . c 1 ⋯ c n = x 0 . c 1 ⋯ c n C(x)=c_0.c_1\cdots{c_n}=x_0.c_1\cdots{c_n} C(x)=c0.c1⋯cn=x0.c1⋯cn:
-
$$
C(x)
=C_1(x)+2^{-n}
=1.\overline{x_1}\ \overline{x_2}
\cdots{\overline{x_{m-1}}}\underset\blacktriangle{0}
\underbrace{1\cdots{11}}{\overline{x{m+1}}\cdots\overline{x_n}}
+2^{-n}
\=1.\overline{x_1}\ \overline{x_2}
\cdots{\overline{x_{m-1}}}\underset\blacktriangle{1}
\underbrace{{0}\cdots{00}}{\overline{x{m+1}}\cdots\overline{x_n}}$$
-
-
🎈可见, x m x_m xm是无论是 T ( x ) 还 是 C ( x ) T(x)还是C(x) T(x)还是C(x)
- 从低位开始向高位扫描的过程中最早出现的码值1都是同一个位置( x m x_m xm)出
-
🎈同时:
-
我们把真值x的补码C(x)的数值位分为两部分:
-
c
1
⋯
c
m
−
1
=
x
1
‾
x
2
‾
⋯
x
m
−
1
‾
c_1\cdots{c_{m-1}}=\overline{x_1}\ \overline{x_2}\cdots \overline{x_{m-1}}
c1⋯cm−1=x1 x2⋯xm−1
- 即,这部分和反码相同
- 记 A = c 1 ⋯ c m − 1 A=c_1\cdots{c_{m-1}} A=c1⋯cm−1
-
c
m
⋯
c
n
{ c_m}\cdots{c_n}
cm⋯cn=
x
m
⋯
x
n
x_m\cdots{x_n}
xm⋯xn
- 部分和原码相同
- 记 B = c m ⋯ c n B=c_m\cdots{c_n} B=cm⋯cn
-
c
1
⋯
c
m
−
1
=
x
1
‾
x
2
‾
⋯
x
m
−
1
‾
c_1\cdots{c_{m-1}}=\overline{x_1}\ \overline{x_2}\cdots \overline{x_{m-1}}
c1⋯cm−1=x1 x2⋯xm−1
-
casesA:如果真值二进制数值位部分没有1(全为0),那么这种情况下,真值 x = 0 x=0 x=0
- 实际上这种情况 ( x = 0 ) (x=0) (x=0)已经不是负数的范畴,仅作为回顾
- T ( x ) = ± 1.0 ⋯ 0 T(x)=\pm1.0\cdots{0} T(x)=±1.0⋯0
- A ( x ) = ± 1.1 ⋯ 1 A(x)=\pm1.1\cdots{1} A(x)=±1.1⋯1
- C ( x ) = 0.0 ⋯ 0 C(x)=0.0\cdots{0} C(x)=0.0⋯0
- 可以看到,这种情况下,补码数值位部分的各个bit和原码的数值位部分一致!
- 这类情况属于极端情况
- m<0或m>n,都属于这类情况
- 可以理解为 A 的 长 度 是 0 , B 的 长 度 为 n : A的长度是0,B的长度为n: A的长度是0,B的长度为n:
-
casesB:否则,真值的数值位二进制数码表示中有1
-
即, m ∈ [ 1 , n ] m\in[1,n] m∈[1,n]
-
m ⩽ 1 时 , 无 论 x 的 正 负 , 补 码 和 原 码 具 有 一 样 的 形 式 ( C ( x ) = T ( x ) ) m\leqslant{1}时,无论x的正负,补码和原码具有一样的形式(C(x)=T(x)) m⩽1时,无论x的正负,补码和原码具有一样的形式(C(x)=T(x))
- 这种情况下可以在分为两种具体情况:
-
m
=
0
m=0
m=0
- m = 0 m=0 m=0要和符号位区分开来,意思是数值位最高位到最低位全部为0
- 即
C
(
x
)
=
x
0
.
0
⋯
00
;
x
=
0
C(x)=x_0.0\cdots{00};x=0
C(x)=x0.0⋯00;x=0(定点小数)
- 或 C ( x ) = x 0 , 0 ⋯ 0 ; x = 0 C(x)=x_0,0\cdots0;x=0 C(x)=x0,0⋯0;x=0(定点整数)
-
m
=
1
m=1
m=1
- 意思是数值位最高位为1,其余数值位全为0
- 即
C
(
x
)
=
x
0
.
10
⋯
00
C(x)=x_0.10\cdots{00}
C(x)=x0.10⋯00,
x
=
±
1
2
x=\pm\frac{1}{2}
x=±21
- 或 C ( x ) = x 0 , 10 ⋯ 00 C(x)=x_0,10\cdots{00} C(x)=x0,10⋯00, x = ± 2 n − 1 , n 是 数 值 位 位 数 x=\pm{2^{n-1}},n是数值位位数 x=±2n−1,n是数值位位数
-
m
=
0
m=0
m=0
- 这种情况下可以在分为两种具体情况:
-
m ⩾ n + 1 m\geqslant{n+1} m⩾n+1
- 这种情况归为casesA
-
-
-
🎈上面两个结论对于 x > 0 x>0 x>0的是时候也显然是成立的(因为 x > 0 x>0 x>0时,原码补码反码一致!)
-
高位部分
- 一般的,我们对补码
C
(
x
)
C(x)
C(x)所对应的真值大小比较感兴趣
- 这关乎到溢出判断和规格化操作的判断
- 然而体现数的大小,主要看从高位比较到低位
- 🎄下面的讨论比较啰嗦,个人认为上面的讨论更加有品位,而且更加体现概率统计的习惯
- 根据上述结论,数值位第一位开始到第m-1位
x
1
⋯
x
m
−
1
x_1\cdots{x_{m-1}}
x1⋯xm−1这部分是x的反码A(x)相同
- 对这部分每位取反,即可得到原码在这部分位置的取值(也就是高位小数位的取值)
- 设:
C
(
x
)
=
x
0
.
x
1
⋯
x
n
C(x)=x_0.x_1\cdots{x_n}
C(x)=x0.x1⋯xn
-
x
1
⋯
x
n
x_1\cdots{x_n}
x1⋯xn至少有一个bit取1(
x
≠
0
x\neq{0}
x=0)
-
x
1
=
0
x_1=0
x1=0
-
x
2
⋯
x
n
中
至
少
有
一
个
1
x_2\cdots{x_n}中至少有一个1
x2⋯xn中至少有一个1
- T ( x ) = x 0 . 1 ⋯ , ∣ x ∣ ⩾ 1 2 T(x)=x_0.1\cdots,|x|\geqslant{\frac{1}{2}} T(x)=x0.1⋯,∣x∣⩾21
-
x
2
⋯
x
n
中
至
少
有
一
个
1
x_2\cdots{x_n}中至少有一个1
x2⋯xn中至少有一个1
-
x
1
=
1
x_1=1
x1=1
-
x
2
⋯
x
n
x_2\cdots{x_n}
x2⋯xn至少有一个bit取1
- T ( x ) = x 0 . 0 ⋯ ; ∣ x ∣ < 1 2 T(x)=x_0.0\cdots;|x|<\frac{1}{2} T(x)=x0.0⋯;∣x∣<21
- 否则
- T ( x ) = C ( x ) = x 0 . 10 ⋯ 00 ; ∣ x ∣ = 1 2 T(x)=C(x)=x_0.10\cdots{00};|x|={\frac{1}{2}} T(x)=C(x)=x0.10⋯00;∣x∣=21
-
x
2
⋯
x
n
x_2\cdots{x_n}
x2⋯xn至少有一个bit取1
-
x
1
=
0
x_1=0
x1=0
- x 1 ⋯ x n x_1\cdots{x_n} x1⋯xn全部取0, x = 0 x=0 x=0
-
x
1
⋯
x
n
x_1\cdots{x_n}
x1⋯xn至少有一个bit取1(
x
≠
0
x\neq{0}
x=0)
例
- 将小数
x
x
x的小数数值部分,从高位到低位分别编为
x
1
⋯
x
n
x_1\cdots{x_n}
x1⋯xn
- KaTeX parse error: Undefined control sequence: \set at position 16: x_i代指第i位小数,i\in\̲s̲e̲t̲{1,2,\cdots{,n}…
- x = x 0 . x 1 ⋯ x n x=x_0.x_1\cdots{x_n} x=x0.x1⋯xn
-
x
=
−
0.11011
,
小
数
位
数
为
n
=
5
;
x=-0.11011,小数位数为n=5;
x=−0.11011,小数位数为n=5;
- 最 低 位 的 1 出 现 在 m = 5 ( 即 x 5 ) 处 最低位的1出现在m=5(即x_5)处 最低位的1出现在m=5(即x5)处
- 原码 T ( x ) = 1.11011 T(x)=1.11011 T(x)=1.11011
- 补码 C ( x ) = 1.00100 + 2 − 5 = 1.00100 + 0.00001 = 1.00101 C(x)=1.00100+2^{-5}=1.00100+0.00001=1.00101 C(x)=1.00100+2−5=1.00100+0.00001=1.00101
-
x
=
−
0.01
⋯
,
小
数
点
尾
数
大
于
2
,
小
于
等
于
n
x=-0.01\cdots,小数点尾数大于2,小于等于n
x=−0.01⋯,小数点尾数大于2,小于等于n
- T ( x ) = 1.01 ⋯ T(x)=1.01\cdots T(x)=1.01⋯
-
C
(
x
)
=
1.1
⋯
C(x)=1.1\cdots
C(x)=1.1⋯
- 根据上面的规律(同一个真值x的原码和补码和反码在结构上的关联:)
- m ⩾ 2 m\geqslant{2} m⩾2
- 设 C ( x ) = x 0 , b 1 b 2 ⋯ b n 设C(x)=x_0,b_1b_2\cdots{b_n} 设C(x)=x0,b1b2⋯bn
- C ( x ) 的 最 低 位 1 应 该 出 现 在 第 m 位 小 数 ( x m = 1 ) C(x)的最低位1应该出现在第m位小数(x_m=1) C(x)的最低位1应该出现在第m位小数(xm=1)
- 更重要的是,同时有
b
1
⋯
b
m
+
1
=
x
1
‾
⋯
x
m
−
1
‾
b_1\cdots{b_{m+1}}=\overline{x_1}\cdots{\overline{x_{m-1}}}
b1⋯bm+1=x1⋯xm−1
- 本例中, m ⩾ 2 m\geqslant{2} m⩾2,那么 m − 1 ⩾ 1 m-1\geqslant{1} m−1⩾1
- 随意,至少能够保证 b 1 = x 1 ‾ b_1=\overline{x_1} b1=x1,即 b 1 = 1 b_1=1 b1=1
- 从而,得到 C ( x ) = 1.1 ⋯ C(x)=1.1\cdots C(x)=1.1⋯的断言
- 根据上面的规律(同一个真值x的原码和补码和反码在结构上的关联:)
允许移位(正确移位)的条件
- 讨论在什么情况下移位不会导致数据丢失而发生错误
补码
- 左移:
- 当符号位和最高数据位一致的时候,进行补码左移1位不会操作数据丢失
- 可以分类讨论
- 也可以反方向讨论:
-
x
≠
0
x\neq{0}
x=0:
- 只有在真值 x 的 最 高 位 有 效 数 据 位 不 会 丢 失 的 左 移 , 对 应 补 码 的 左 移 行 为 x的最高位有效数据位不会丢失的左移,对应补码的左移行为 x的最高位有效数据位不会丢失的左移,对应补码的左移行为
-
x
=
x
0
,
x
1
x
2
⋯
x=x_0,x_1x_2\cdots
x=x0,x1x2⋯
- x 1 = 1 时 , 左 移 1 b i t 会 发 生 错 误 x_1=1时,左移1bit会发生错误 x1=1时,左移1bit会发生错误(丢失高位数据)
-
x
1
=
0
时
,
左
移
1
b
i
t
不
会
导
致
关
键
数
据
丢
失
x_1=0时,左移1bit不会导致关键数据丢失
x1=0时,左移1bit不会导致关键数据丢失(类似于对非规格化数做一次左归操作)
- 这种情况下,对应到补码的移动,需要讨论正负两种大类情况
-
x
0
=
0
x_0=0
x0=0
- 即 x = + 0.01... ; C ( x ) = T ( x ) = 0.01 ⋯ 即x=+0.01...;C(x)=T(x)=0.01\cdots 即x=+0.01...;C(x)=T(x)=0.01⋯
- 可见, x 1 = 0 x_1=0 x1=0
-
x
0
=
1
x_0=1
x0=1
- x = − 0.01... ; C ( x ) = 1.1 ⋯ x=-0.01...;C(x)=1.1\cdots x=−0.01...;C(x)=1.1⋯
- 可见, x 1 = 1 x_1=1 x1=1
-
x
0
=
0
x_0=0
x0=0
- 这种情况下,对应到补码的移动,需要讨论正负两种大类情况
- 可见,当真值x不为0时,符号位和最高数据位一致的时候,进行补码左移1位不会操作数据丢失
-
x
=
0
时
,
C
(
x
)
中
,
x
1
对
应
为
0
x=0时,C(x)中,x_1对应为0
x=0时,C(x)中,x1对应为0
- 由于x=0,所以左移位操作丢失0不会造成错误
- 综 上 , 只 要 C ( x ) = c 0 . c 1 ⋯ 满 足 c 0 = c 1 , 那 么 左 移 1 位 不 会 造 成 错 误 综上,只要C(x)=c_0.c_1\cdots满足c_0=c_1,那么左移1位不会造成错误 综上,只要C(x)=c0.c1⋯满足c0=c1,那么左移1位不会造成错误
-
x
≠
0
x\neq{0}
x=0:
- 当符号位和最高数据位一致的时候,进行补码左移1位不会操作数据丢失
两数相加进位规律
-
两个n位数相加,结果位数不超过n+1位
-
推导
-
x + y ⩽ ∣ x + y ∣ ⩽ ∣ x ∣ + ∣ y ∣ 两 个 最 大 的 n 位 r 进 制 数 的 求 和 结 果 : 记 q = r − 1 ( 就 是 表 示 最 大 的 数 码 ) 例 如 : 如 果 r = 10 ( 十 进 制 ) , 那 么 q = 9 ) 最 小 n 位 数 : r n − 1 = 1 0 ⋯ 00 ⏟ n − 1 个 0 ⏞ n 位 数 最 大 的 n 位 数 : r n − 1 = q ⋯ q q ⏟ n 个 q 最 小 n + 1 位 数 : r n 例 如 n = 2 , 10 和 99 分 别 是 最 小 2 位 数 和 最 大 两 位 数 2 个 最 大 n 位 数 相 加 : A = ( r n − 1 ) + ( r n − 1 ) = 2 ( r n − 1 ) 最 大 n 位 数 的 r 倍 B = r ( r n − 1 ) = q ⋯ q q ⏟ n 个 q 0 ( A < B ) 最 小 n + 2 位 数 : C = r n + 1 C B = r ( r n − 1 ) 2 ( r n − 1 ) = r 2 容 易 知 道 , 当 r ⩾ 2 时 : B ⩽ C 从 而 A < B ⩽ C , 即 A < C 因 此 , 两 个 n 位 数 相 加 , 位 数 无 法 达 到 n + 2 位 , 最 多 达 到 n + 1 位 x+y\leqslant|x+y|\leqslant|x|+|y| \\ 两个最大的n位r进制数的求和结果: \\记q=r-1(就是表示最大的数码) \\例如:如果r=10(十进制),那么q=9) \\最小n位数:r^{n-1}=\overbrace{1\underbrace{0\cdots{00}}_{n-1个0}}^{n位数} \\最大的n位数:r^n-1=\underbrace{q\cdots{qq}}_{n个q} \\最小n+1位数:r^n \\ \\例如n=2,10和99分别是最小2位数和最大两位数 \\ \\2个最大n位数相加: \\A=(r^n-1)+(r^n-1)=2(r^n-1) \\最大n位数的r倍 \\B=r(r^n-1)=\underbrace{q\cdots{qq}}_{n个q}0 \\(A<B) \\最小n+2位数: \\C=r^{n+1} \\\frac{C}{B}=\frac{r(r^n-1)}{2(r^n-1)} =\frac{r}{2} \\容易知道,当r\geqslant2时:B\leqslant{C} \\从而A<B\leqslant{C},即A<C \\因此,两个n位数相加,位数无法达到n+2位,最多达到n+1位 x+y⩽∣x+y∣⩽∣x∣+∣y∣两个最大的n位r进制数的求和结果:记q=r−1(就是表示最大的数码)例如:如果r=10(十进制),那么q=9)最小n位数:rn−1=1n−1个0 0⋯00 n位数最大的n位数:rn−1=n个q q⋯qq最小n+1位数:rn例如n=2,10和99分别是最小2位数和最大两位数2个最大n位数相加:A=(rn−1)+(rn−1)=2(rn−1)最大n位数的r倍B=r(rn−1)=n个q q⋯qq0(A<B)最小n+2位数:C=rn+1BC=2(rn−1)r(rn−1)=2r容易知道,当r⩾2时:B⩽C从而A<B⩽C,即A<C因此,两个n位数相加,位数无法达到n+2位,最多达到n+1位
-
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了