PC_十进制转二进制速算+常用的2进制和10进制数/转换关系
文章目录
常用的2进制和10进制数/转换关系
🎈密集0/1串
- 以下内容应当十分熟悉,而且能够逆用自如
- 包括n位最大小数/整数
- n位最小小数/整数
1 = 2 0 10 = 2 1 100 = 4 = 2 2 1000 = 8 = 2 3 1=2^0 \\ 10=2^1 \\ 100=4=2^2 \\ 1000=8=2^3 1=2010=21100=4=221000=8=23
- 熟悉16进制十分有必要,对于提高计算效率和速度大有好处
- 口诀0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
- 为了强调9后面是A,而不是10(是但不完全是)
- 9ABCDEF
- 9 , 10 , A , B \boxed{\xcancel{9,10,A,B}} 9,10,A,B
1001 = 2 3 + 2 0 = 9 = 9 H 1010 = 2 3 + 2 1 = 10 = A H 1011 = 2 3 + 2 1 + 2 0 = 11 = B H 1100 = 2 3 + 2 2 = 12 = C H 1101 = 2 3 + 2 2 + 2 0 = 13 = D H 1110 = 2 3 + 2 2 + 2 1 = 14 = E H 1111 = 2 3 + 2 2 + 2 2 + 2 1 + 2 0 = 15 = F H H 后 缀 表 示 十 六 进 制 数 \\ \begin{aligned} 1001&=2^3+2^0=9&=9H \\ 1010&=2^3+2^1=10&=AH \\ 1011&=2^3+2^1+2^0=11&=BH \\ 1100&=2^3+2^2=12&=CH \\ 1101&=2^3+2^2+2^0=13&=DH \\ 1110&=2^3+2^2+2^1=14&=EH \\ 1111&=2^3+2^2+2^2+2^1+2^0=15&=FH \end{aligned} \\H后缀表示十六进制数 1001101010111100110111101111=23+20=9=23+21=10=23+21+20=11=23+22=12=23+22+20=13=23+22+21=14=23+22+22+21+20=15=9H=AH=BH=CH=DH=EH=FHH后缀表示十六进制数
🎈其他常用二进制数!
-
它们通常用来展开大数为十六进制(二进制)
- 配合减权定位法
-
2 10 = 1024 ≈ 1 0 3 2 11 = 2 ⋅ 2 10 = 2048 2 12 = 2 2 ⋅ 2 10 = 4 ⋅ 2 10 = 4096 2 15 = 2 5 ⋅ 2 10 = 32768 ≈ 32 ⋅ 2 10 2 16 = 2 6 ⋅ 2 10 = 64 ⋅ 2 10 = 65536 ≈ 65 ⋅ 1 0 3 ≈ 64 ⋅ 1 0 3 2 20 = 2 10 ⋅ 2 10 = 1048576 ≈ 1 0 6 百 万 级 别 2^{10}=1024\approx10^3 \\ 2^{11}=2\cdot{2^{10}}=2048 \\ 2^{12}=2^2\cdot2^{10}=4\cdot2^{10}=4096 \\ 2^{15}=2^{5}\cdot{2^{10}}=32768\approx{32\cdot{2^{10}}} \\ 2^{16}=2^6\cdot{2^{10}}=64\cdot2^{10} =65536\approx{65\cdot{10^3}}\approx{64\cdot10^3} \\ 2^{20}={2^{10}}\cdot{2^{10}}=1048576\approx10^6百万级别 210=1024≈103211=2⋅210=2048212=22⋅210=4⋅210=4096215=25⋅210=32768≈32⋅210216=26⋅210=64⋅210=65536≈65⋅103≈64⋅103220=210⋅210=1048576≈106百万级别
n位二进制真值最大最小值
整数
正整数
2 n = 1 0 ⋯ 0 ⏟ n 个 0 ; ( 最 小 的 ( n + 1 ) 位 整 数 ) 2 n − 1 = 1 ⋯ 1 ⏟ n 个 1 ; ( n 位 最 大 整 数 , n 位 1 整 数 2^{n}=1\underbrace{0\cdots0}_{n个0};(最小的(n+1)位整数) \\ 2^{n}-1=\underbrace{1\cdots1}_{n个1};(n位最大整数,n位1整数 2n=1n个0 0⋯0;(最小的(n+1)位整数)2n−1=n个1 1⋯1;(n位最大整数,n位1整数
负整数
- − 2 n − 1 = − 1 ⋯ 1 ⏟ n 个 1 ; ( n 位 最 小 负 整 数 , n 位 1 整 数 ) − 2 0 = − 1 ; 最 大 负 数 ( 根 据 需 要 补 0 ) -2^{n}-1=-\underbrace{1\cdots1}_{n个1};(n位最小负整数,n位1整数) \\ -2^0=-1;最大负数(根据需要补0) −2n−1=−n个1 1⋯1;(n位最小负整数,n位1整数)−20=−1;最大负数(根据需要补0)
小数
-
纯
小
数
(
x
∈
(
−
1
,
1
)
)
纯小数(x\in(-1,1))
纯小数(x∈(−1,1))
- 正 小 数 x ∈ ( 0 , 1 ) 正小数x\in(0,1) 正小数x∈(0,1)
- 负 小 数 x ∈ ( − 1 , 0 ) 负小数x\in(-1,0) 负小数x∈(−1,0)
正数小数
-
2 − n = + 0. 0 ⋯ 1 ⏟ n 位 小 数 ; ( 最 小 的 n 位 小 数 ) 1 − 2 − n = + 0. 1 ⋯ 1 ⏟ n 位 小 数 ( n 个 1 ) ; ( 最 大 小 数 , n 位 1 小 数 ) \begin{aligned} 2^{-n}&=+0.\underbrace{0\cdots1}_{n位小数};(最小的n位小数) \\ 1-2^{-n}&=+0.\underbrace{1\cdots1}_{n位小数(n个1)};(最大小数,n位1小数) \end{aligned} 2−n1−2−n=+0.n位小数 0⋯1;(最小的n位小数)=+0.n位小数(n个1) 1⋯1;(最大小数,n位1小数)
-
2 − n − 1 = − 0. 1 ⋯ 1 ⏟ n 位 小 数 ; ( 最 小 的 n 位 小 数 ) − 2 − n = − 0. 0 ⋯ 1 ⏟ n 位 小 数 ; ( 最 大 的 负 n 位 小 数 ) \begin{aligned} 2^{-n}-1&=-0.\underbrace{1\cdots1}_{n位小数} ;(最小的n位小数) \\ -2^{-n}&=-0.\underbrace{0\cdots1}_{n位小数};(最大的负n位小数) \end{aligned} 2−n−1−2−n=−0.n位小数 1⋯1;(最小的n位小数)=−0.n位小数 0⋯1;(最大的负n位小数)
二进制绝对值加减法
-
利用下面公式(原理)将被减数拆分称
-
因子分解(指数)
-
2 m ⋅ 2 n = 2 m + n 2^m\cdot2^n=2^{m+n} 2m⋅2n=2m+n
-
这是一个很有用的二进制公式
-
上 面 公 式 对 应 的 二 进 制 形 式 为 : ( 1 0 ⋯ 0 ⏟ m 个 0 ) 2 ⋅ ( 1 0 ⋯ 0 ⏟ n 个 0 ) 2 = ( 1 0 ⋯ 0 ⏟ m + n 个 0 ) 2 上面公式对应的二进制形式为: \\ (1\underset{m个0}{\underbrace{0\cdots0}})_2\cdot{(1\underset{n个0}{\underbrace{0\cdots0}})_2} =(1\underset{m+n个0}{\underbrace{0\cdots0}})_2 上面公式对应的二进制形式为:(1m个0 0⋯0)2⋅(1n个0 0⋯0)2=(1m+n个0 0⋯0)2
-
-
2 n = 2 ⋅ 2 n − 1 = 2 n − 1 + 2 n − 1 2^n=2\cdot{2^{n-1}}=2^{n-1}+2^{n-1} 2n=2⋅2n−1=2n−1+2n−1
- 2 0 = 1 2^0=1 20=1
- 2 1 = 2 0 + 1 2^1=2^0+1 21=20+1
-
-
∑ i = 0 n 2 i = 2 0 ( 1 − 2 n + 1 ) 1 − 2 = 2 n + 1 − 1 而 : ∑ i = 0 n 2 i = 1 ⋯ 1 ⏟ n 个 1 2 n + 1 − 1 = 1 ⋯ 1 ⏟ n 个 1 2 n − 1 = 1 ⋯ 1 ⏟ n − 1 个 1 \sum\limits_{i=0}^{n}2^i=\frac{2^0(1-2^{n+1})}{1-2}=2^{n+1}-1 \\而: \\\sum\limits_{i=0}^{n}2^i=\underset{n个1}{\underbrace{1\cdots{1}}} \\ 2^{n+1}-1=\underset{n个1}{\underbrace{1\cdots{1}}} \\2^{n}-1=\underset{n-1个1}{\underbrace{1\cdots{1}}} i=0∑n2i=1−220(1−2n+1)=2n+1−1而:i=0∑n2i=n个1 1⋯12n+1−1=n个1 1⋯12n−1=n−1个1 1⋯1
-
2 n − 1 = ∑ i = 0 n − 1 2 i = 2 n − 1 + 2 n − 2 ⋯ + 2 1 + 2 0 = ( 1 ⋯ 1 ⏟ n 个 1 ) 2 n = ( 2 n − 1 ) + 1 = ( ∑ i = 0 n − 1 2 i ) + 1 = 2 n − 1 + 2 n − 2 ⋯ + 2 1 + 2 0 + 1 = ( 1 ⋯ 1 ⏟ n 个 1 ) + 1 = ( 1 0 ⋯ 0 ⏟ n 个 0 ) 2^{n}-1 =\sum\limits_{i=0}^{n-1}2^i=2^{n-1}+2^{n-2}\cdots+2^1+2^0 \\ =\left(\underset{n个1}{\underbrace{1\cdots{1}}}\right) \\\\ 2^{n}=(2^n-1)+1 =(\sum\limits_{i=0}^{n-1}2^i)+1 \\=2^{n-1}+2^{n-2}\cdots+2^1+2^0+1 \\ =\left(\underset{n个1}{\underbrace{1\cdots{1}}}\right)+1 \\ =\left(1\underset{n个0}{\underbrace{0\cdots{0}}}\right) 2n−1=i=0∑n−12i=2n−1+2n−2⋯+21+20=(n个1 1⋯1)2n=(2n−1)+1=(i=0∑n−12i)+1=2n−1+2n−2⋯+21+20+1=(n个1 1⋯1)+1=(1n个0 0⋯0)
-
( 1 0 ⋯ 0 ⏟ n 个 0 ) = ( 1 ⋯ 1 ⏟ n 个 1 ) + 1 \left(1\underset{n个0}{\underbrace{0\cdots{0}}}\right) =\left(\underset{n个1}{\underbrace{1\cdots{1}}}\right)+1 (1n个0 0⋯0)=(n个1 1⋯1)+1
-
🎈二进制数幂展开(幂和)形式相互转换
-
例 如 : 10100 1 2 = 1 ⋅ 2 4 + 1 ⋅ 2 3 + 1 ⋅ 2 0 1 ⋅ 2 4 + 1 ⋅ 2 3 + 1 ⋅ 2 0 = 10100 1 2 例如: 101001_2=1\cdot2^4+1\cdot2^3+1\cdot2^0 \\ 1\cdot2^4+1\cdot2^3+1\cdot2^0=101001_2 例如:1010012=1⋅24+1⋅23+1⋅201⋅24+1⋅23+1⋅20=1010012
- 该方法也称为减权定位法交好用的方法,对于大数比较高效
- 对于小数(16以内的(4位二进制数)),直接记忆对应关系会更快速
- 对于大数,使用十六进制来代替二进制是个比较好的选择,可以提高书写效率,降低写错机率
- 该方法也称为减权定位法交好用的方法,对于大数比较高效
-
幂和形式相比于二进制0/1串形式的好处在于,符号更加简洁,(省略了0的书写)
- 特别是被计算的数比较大时( 128 = 2 7 128=2^7 128=27,已经占用了8bit的长度)
- 系数非0的幂对应于二进制结果中的一个1
-
从幂的形式转化为0/1串
-
推荐的做法是,根据被转换的幂和式的最高位权M,列出0~M位权列
-
将系数为1的列先填充
-
其余的全填充0即可
-
-
例
-
例如: y = 2 7 + 2 5 + 2 4 + 2 1 y=2^7+2^5+2^4+2^1 y=27+25+24+21
-
7 位权 6 5 4 3 2 1 0 1 系数 0 1 1 0 0 1 0 - 因 此 y = 2 7 + 2 5 + 2 4 + 2 1 = 1011001 0 2 因此y=2^7+2^5+2^4+2^1=10110010_2 因此y=27+25+24+21=101100102
-
例
-
x=65530的二进制(十六进制)展开;
- 2 16 = 65536 x = 65530 = 2 16 − 6 = ( 2 16 − 1 ) − ( 6 − 1 ) 这 可 以 将 被 减 数 化 为 全 1 , 方 便 减 法 = O x F F F F − O x 5 = F F F 0 H + ( 111 1 2 − 10 1 2 ) = F F F 0 H + 101 0 2 = F F F A H 2^{16}=65536 \\x=65530=2^{16}-6 \\=(2^{16}-1)-(6-1) \\这可以将被减数化为全1,方便减法 \\=\mathrm{Ox}FFFF-\mathrm{Ox}5 \\=FFF0H+(1111_2-101_2) \\=FFF0H+1010_2 =FFFA\mathrm{H} 216=65536x=65530=216−6=(216−1)−(6−1)这可以将被减数化为全1,方便减法=OxFFFF−Ox5=FFF0H+(11112−1012)=FFF0H+10102=FFFAH
🎈例(幂化运算处理二进制减法)
-
1100 0 2 − 10 1 2 = ( 2 1 + 2 0 ) ⋅ 2 3 − ( 2 2 + 2 0 ) = 2 4 + 2 3 − 2 2 − 1 = 2 4 + ( 2 3 − 1 ) − 2 2 = 2 4 + ( 2 2 + 2 1 + 2 0 ) − 2 2 = 2 4 + 2 1 + 2 0 = 1001 1 2 11000_2-101_2 =(2^1+2^0)\cdot 2^3-(2^2+2^0) \\ =2^4+2^3-2^2-1 \\ =2^4+(2^3-1)-2^2 \\=2^4+(2^2+2^1+2^0)-2^2 \\=2^4+2^1+2^0 \\=10011_2 110002−1012=(21+20)⋅23−(22+20)=24+23−22−1=24+(23−1)−22=24+(22+21+20)−22=24+21+20=100112
-
1001000 0 2 − 10110 1 2 = 2 7 + 2 4 − ( 2 5 + 2 3 + 2 2 + 2 0 ) = 2 2 ⋅ 2 5 + ( 2 3 + 2 2 + 2 1 + 2 0 + 1 ) − ( 2 5 + 2 3 + 2 2 + 2 0 ) = ( 2 1 + 2 0 ) 2 5 + 2 1 + 1 = 2 6 + 2 5 + 2 1 + 2 0 = 110001 1 2 10010000_2-101101_2=2^7+2^4-(2^5+2^3+2^2+2^0) \\ =2^2\cdot2^5+(2^3+2^2+2^1+2^0+1)-(2^5+2^3+2^2+2^0) \\={(2^1+2^0)}2^5+2^1+1 \\=2^6+2^5+2^1+2^0 =1100011_2 100100002−1011012=27+24−(25+23+22+20)=22⋅25+(23+22+21+20+1)−(25+23+22+20)=(21+20)25+21+1=26+25+21+20=11000112
手工计算(十进制转二进制数)
通用方法
- 除基取余法处理整数部分
- 乘积取整法处理小数部分
例
- 将 123.687 5 10 转 换 为 二 进 制 数 将123.6875_{10}转换为二进制数 将123.687510转换为二进制数
🎈🎈减权定位法
- 减权定位法对于手工计算是较为高效的方法
- 基本原理也是按权展开,对于二进制,十进制,十六进制内的对应关系熟练的话,可以算的很快
- 包括十进制转二进制,二进制转十进制
- 比如x=123
- 分析其数量级为 1 0 3 以 内 或 者 说 1 0 2 量 级 , 对 应 二 进 制 为 2 6 以 及 2 7 左 右 10^3以内或者说10^2量级,对应二进制为2^6以及2^7左右 103以内或者说102量级,对应二进制为26以及27左右
- 2 7 = 128 , 2 6 = 64 2^7=128,2^6=64 27=128,26=64
- x 1 = x − 2 6 = 123 − 64 = 59 x_1=x-2^6=123-64=59 x1=x−26=123−64=59
- x 2 = 59 − 2 5 = 59 − 32 = 27 x_2=59-2^5=59-32=27 x2=59−25=59−32=27
- x 3 = 27 − 2 4 = 11 x_3=27-2^4=11 x3=27−24=11
- x 4 = 11 − 2 3 − 2 1 − 2 0 = 0 x_4=11-2^3-2^1-2^0=0 x4=11−23−21−20=0
- 因 此 x = 2 6 + 2 5 + 2 4 + 2 3 + 2 1 + 2 0 = 111101 1 2 因此x=2^6+2^5+2^4+2^3+2^1+2^0=1111011_2 因此x=26+25+24+23+21+20=11110112
- 基本原理也是按权展开,对于二进制,十进制,十六进制内的对应关系熟练的话,可以算的很快
减权定位法的其他形式
- 如果您熟练十六进制和二进制的转换,那么改进的减权定位法可以进一步加快
例如:K=27;
- 4 ⋅ 6 = 24 = 2 2 ⋅ ( 2 2 + 2 1 ) 4\cdot{6}=24=2^2\cdot(2^2+2^1) 4⋅6=24=22⋅(22+21)
- 24 + 3 = 10 0 2 ⋅ 11 0 2 + 1 1 2 = 1100 0 2 + 1 1 2 = 1101 1 2 24+3=100_2\cdot110_2+11_2=11000_2+11_2=11011_2 24+3=1002⋅1102+112=110002+112=110112
例如:K=123
-
2 7 = 2 2 + 5 = 2 2 ⋅ 2 5 = 4 × 32 = 128 2^7=2^{2+5}=2^2\cdot{2^5}=4\times{32}=128 27=22+5=22⋅25=4×32=128
-
方法1:
-
123 − 3 ⋅ 2 5 = 123 − 3 ⋅ 32 = 123 − 96 = 27 123-3\cdot{2^5}=123-3\cdot{32}=123-96=27 123−3⋅25=123−3⋅32=123−96=27
-
3 ⋅ 2 5 = 1 1 2 ⋅ 10000 0 2 = 110000 0 2 3\cdot{2^5}=11_2\cdot100000_2=1100000_2 3⋅25=112⋅1000002=11000002
-
27 = 11011 27=11011 27=11011
-
123 = 1111011 123=1111011 123=1111011
-
-
方法2:
- 123 = 128 − 5 = 2 7 − ( 2 2 + 2 0 ) 123=128-5=2^7-(2^2+2^0) 123=128−5=27−(22+20)
十进制转二进制小结
-
如果大权定位可以很好的接近被转换的数,那么优先使用大权
- 否则使用小一点的权在试一次(通常权越小,逼近效果越好,但是操作次数可能会增加)
-
补偿法(划分)
- 153=128+2+23=1000 0000+10+(16+7)=1000 0010+10000+111=1001 1001
-
削减法
- 153=160-7=1010 000-111=1001 1111-110
-
经验表法
-
最快的方法:经验表法(相当于乘法口诀那样的效果)
-
次快的方法:
- 前两类方法比较适合跟2的幂比较接近的情况下,和容易计算
- 经验法比较适合和相邻近2的幂比较大
- 如果能够将常用2的幂的整数倍(十进制形式)比较熟练,那么三种方法结合,也可以达到很高的计算效率
-
记住一些常用的2的幂的倍数:
-
比如8的倍数系列
-
倍数 结果 转换二进制结果 10 80 1010*1000=101000 11 88 1011*1000=101100 12 96 1100*1000 13 104 1101*1000 14 112 1110*1000 15 120 1111*1000 -
16的被数系列
-
10 160 1010*10000 11 176 1011*10000 12 192 1100*10000 13 208 1101*10000 14 224 1110*10000 15 240 1111*10000
-
-
100
- 100 = 3 × 32 + 4 = 1 1 2 × 2 5 + 2 2 = 1100000 + 100 = 110010 0 2 100=3\times32+4=11_2\times{2^5}+2^2=1100000+100=1100100_2 100=3×32+4=112×25+22=1100000+100=11001002
-
100
=
12
×
8
+
4
=
110
0
2
×
2
3
+
2
2
100 =12\times8+4=1100_2\times{2^3}+2^2
100=12×8+4=11002×23+22
- = 110000 0 2 + 10 0 2 = 1100100 + 2 =1100000_2+100_2=1100100+2 =11000002+1002=1100100+2
153
- 153=128+2+23=1000 0000+10+(16+7)=1000 0010+10000+111=1001 1001
- 153=160-7=
16*10
-7=1010 000-111=1001 111+1 -111=1001 111 - 111+1=1001 000+1=1001 001 - 153=160-7=
16*10
-7=1010 000-111=1001 1111-110= 1001 1001
178
-
178
=
16
×
10
+
18
178=16\times10+18
178=16×10+18
- = 10000 × 1010 + 2 4 + 2 1 =10000\times{1010}+2^4+2^1 =10000×1010+24+21
- = 10100000 + 10000 + 10 =1010 0000+10000+10 =10100000+10000+10
- 10110010 10110010 10110010
215
- 215=255-40=1111 1111-10 1000=1101 0111
- 40=32+8=10 0000+1000=10 1000
252
- 2 8 = 256 2^8=256 28=256
- 252=256-1-3=1111 1111-11=1111 1100
12345
-
K = 12 × 1 0 3 + 345 K=12\times{10^3}+345 K=12×103+345
- = 12 × 2 10 + 57 =12\times{2^{10}}+57 =12×210+57
-
=
12
×
2
10
+
3
×
2
4
+
9
=12\times{2^{10}}+3\times{2^4}+9
=12×210+3×24+9
- 对于16以内的数转换为2进制很简单,到了上面这一部分基本可以结束了
- = 110 0 2 × 2 10 + 1 1 2 × 2 4 + 2 3 + 2 0 =1100_2\times{2^{10}}+11_2\times{2^4}+2^3+2^0 =11002×210+112×24+23+20
- = 11000000000000 + 110000 + 1000 + 1 =1100 0000000000+110000+1000+1 =11000000000000+110000+1000+1
- = 11000000111001 =11000000111001 =11000000111001
-
从二进制到十进制可以很快速:
- 相比于原始按权展开要快不少
- 1010100 1 2 = A 9 H = 16 ⋅ 10 + 9 = 169 10101001_2=A9H=16\cdot10+9=169 101010012=A9H=16⋅10+9=169
常用的减法情况
- 在实际手算题目中,几乎都是:A>B>0求A-B
- 利用补码法可以将二进制数的减法用取反和加法的方式求解
K=145
- 145=128+2+15=1000 0000+(10+1111)=1001 0001
K=230
- 230=255-25=1111 1111 - 11001=1110 0110
- 25=16+9=10000+1001=11001
A-B
-
补码法
- 改写
- 对齐
- 还原
-
A-B=(123-45)-(4*11+1)=(0111 1111 -100)-(101100+1)=0111 1011-10 1101
- =0111 1011-0010 1101
-
y=A-B=123-45=C(C(123)+C(-45))=C(0111 1011+1101 0011)=C(1 0100 1110)=C(100 1110)=78
变形
- A>B>0
- 这种情况下,不需要计算符号位
- A=0111 1011
- B=0010 1101
- 求y=A-B
- y=C(C(A)+C(-B))=C(0111 1011+1101 0011)=C(1 0100 1110)=C(100 1110)=78
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」