一个整数转成二进制,都明白是如果转换的,可以利用他的转换原理用代码表现出来。
例如7转换从二进制就是不断地除2,保留余数,一直到0:7除2,余数1 ,第二次,3除2,余数1,第三次,1除2,余1,最后是0,
那么7的二进制的表现形式就是1 1 1,
如果用代码表示的话,可以用循环来不断的除2,当然除二也是有条件的那就是被除数不能为0,当被除数为0是终止循环。
循环可以使用for循环,循环的次数,可以用一个计数器来表现一下(设计数器为te,每次满足条件能够除以1时,te也自动加一)。
for循环的样式:for(int i =0 ;i <=te;i++),当满足条件时,i和te同时自加一,当条件不满足时,只有i会自加,循环就会终止。
int arr[32]={0};//使用数组来存放二进制数。 int a,i,t=0; scanf("%d",&a); for(i=0;i<=t;i++){ if(a!=0){ arr[i]=a%2; a=a/2; t++; } }
再将二进制录入数组中后,可以将数组反转输出,或者调换元素位置
#include<stdio.h> int main(){ int arr[32]={0}; int a,i,t=0; scanf("%d",&a); for(i=0;i<=t;i++){ if(a!=0){ arr[i]=a%2; a=a/2; t++; } } for(i=0;i<t/2;i++){ //printf("%2d",arr[i]); int te=arr[i]; arr[i]=arr[t-1-i]; arr[t-1-i]=te; } for(i=0;i<t;i++){ printf("%2d",arr[i]); } return 0; }
我这里是将数组元素进行调换了,不过效果一样。
for(i=t-1;i>=0;i--){ printf("%2d",arr[i]); }
这个是将数组反转输出的。
标签:输出,arr,二进制,整数,int,循环,数组,余数 From: https://www.cnblogs.com/tkmi/p/18135825