进制转换
Done
ACM/ICPC
Start at: 2025-12-17 12:00
200
hour(s)
Host:
30
超易懂!十进制转二进制的方法(小学生版)
小朋友,我们已经知道十进制是“满10进1”,二进制是“满2进1”(只有0和1两个数字)。把十进制数变成二进制数,核心就一个:除2取余,倒排余数!下面用讲故事、举例子的方式,把这个方法讲得明明白白~
一、先记住“转换口诀”
- 用十进制数 ÷ 2,算出商和余数(余数只会是0或1);
- 把余数记下来(这是二进制的“一位”);
- 用第一步得到的商,继续 ÷ 2,再记余数;
- 重复上面的步骤,直到商变成0为止;
- 把所有余数倒着排,就是最终的二进制数!
二、举个例子:把十进制10变成二进制
我们把“十进制10”想象成10颗糖果,要分给2个小朋友,一步步分:
| 步骤 | 计算(被除数 ÷ 除数 = 商 … 余数) | 记录余数 | 商是否为0? |
|---|---|---|---|
| 1 | 10 ÷ 2 = 5 … 0 | 0 | 否(商是5) |
| 2 | 5 ÷ 2 = 2 … 1 | 1 | 否(商是2) |
| 3 | 2 ÷ 2 = 1 … 0 | 0 | 否(商是1) |
| 4 | 1 ÷ 2 = 0 … 1 | 1 | 是(商是0) |
现在,我们记下的余数是:0、1、0、1(按步骤顺序)。
最后倒着排这些余数:1、0、1、0 → 所以十进制10的二进制是1010!
三、再试一个:十进制5转二进制
跟着步骤走:
- 5 ÷ 2 = 2 … 1 → 记余数1
- 2 ÷ 2 = 1 … 0 → 记余数0
- 1 ÷ 2 = 0 … 1 → 记余数1
- 倒排余数:1、0、1 → 十进制5的二进制是101!
四、特殊情况:十进制0转二进制
如果要转的数是0,不用除啦!二进制的0就是0~
五、用“画图法”理解(更直观)
拿十进制7举例:
7 ÷ 2 = 3 余1 → 余数1(最右边的位)
3 ÷ 2 = 1 余0 → 余数0(中间位)
1 ÷ 2 = 0 余1 → 余数1(最左边的位)
倒排余数:1 0 1 → 7的二进制是111
可以把余数想象成“从右到左盖积木”,先算出来的余数盖在右边,后算的盖在左边~
六、小技巧:验证结果对不对
转完后可以反过来验证:二进制转十进制,看结果是不是原来的数。 比如1010(二进制): 1×8 + 0×4 + 1×2 + 0×1 = 8+0+2+0=10(十进制)→ 没错!
七、动手练一练(答案在最后)
- 十进制8转二进制 → ?
- 十进制3转二进制 → ?
- 十进制15转二进制 → ?
答案:
- 8→1000(8÷2=4余0,4÷2=2余0,2÷2=1余0,1÷2=0余1 → 倒排1000)
- 3→11(3÷2=1余1,1÷2=0余1 → 倒排11)
- 15→1111(15÷2=7余1,7÷2=3余1,3÷2=1余1,1÷2=0余1 → 倒排1111)
小朋友,只要记住“除2取余、倒排余数”这8个字,多练几次,十进制转二进制就再也难不倒你啦!
#include<bits/stdc++.h>
using namespace std;
long long n,t=0,a[105];
int main(){
cin>>n;
while(n>0)
{
a[++t]=n%2;//先++,让t从0变成1,从1号位置开始
n=n/2;
}
for(int i=t;i>=1;i++)
cout<<a[i];
return 0;
}
二进制转十进制方法
#include<bits/stdc++.h>
using namespace std;
int s;
string a;//二进制数用字符串保存
int main() {
int n;
cin>>a;
for(int i=0;i<a.size();i++)
s=s*2+(a[i]-'0');//逐个进行分离 ,每次乘以2加上分离的数
cout<<s;
return 0;
}
其他进制只需要改对应的进制数2
十进制转换十六进制
#include<bits/stdc++.h>
using namespace std;
long long n,t=0,a[105];
int main(){
cin>>n;
while(n>0)
{
a[++t]=n%16;//先++,让t从0变成1,从1号位置开始
n=n/16;
}
for(int i=t;i>=1;i++)
if(a[i]<10)
cout<<a[i];
else
cout<<char('a'+a[i]-10); //超过10变成对应的字母
return 0;
}
- Status
- Done
- Rule
- ACM/ICPC
- Problem
- 8
- Start at
- 2025-12-17 12:00
- End at
- 2025-12-25 20:00
- Duration
- 200 hour(s)
- Host
- Partic.
- 30