302转换为二进制 怎么转换 求余是怎么回事呀

来源:百度知道 编辑:UC知道 时间:2024/06/30 21:35:30

十进制与二进制转换之相互算法

十进制转二进制:

用2辗转相除至结果为1
将余数和最后的1从下向上倒序写 就是结果

例如302

302/2 = 151 余0
151/2 = 75 余1
75/2 = 37 余1
37/2 = 18 余1
18/2 = 9 余0
9/2 = 4 余1
4/2 = 2 余0
2/2 = 1 余0

故二进制为100101110

二进制转十进制

从最后一位开始算,依次列为第0、1、2...位
第n位的数(0或1)乘以2的n次方
得到的结果相加就是答案

例如:01101011.转十进制:

第0位:1乘2的0次方=1
1乘2的1次方=2
0乘2的2次方=0
1乘2的3次方=8
0乘2的4次方=0
1乘2的5次方=32
1乘2的6次方=64
0乘2的7次方=0

然后:1+2+0 +8+0+32+64+0=107.

二进制01101011=十进制107.

求余:

%号在C/C++中是取余的意思,例如
4除以3的余数是一,所以在C/C++中4%3=1

求余运算可能碰到负值,这时候结果的符号与第一个数的符号相同。
比如4%(-3)=1而(-4)%3= -1

#include<stdio.h>
void main()
{
int N,i=0,a[100];
scanf("%d",&N);
while(N)
{
a[i++]=N%2;
N=N/2;
}
while(i)printf("%d",a[--i]);