数制转换

将任一整数转换为二进制形式

//二进制转换

#include <stdio.h>

int main()
{
	void printb(int,int);
	int x;
	printf("Input number:");
	scanf("%d",&x);
	printf("number of decimal form:%d\n",x);
	printf("it's binary form:");
	printb(x,sizeof(int)*8);		//x:整数,sizeof(int):int型在内存中所占的字节数,sizeof(int)*8:int型对应的位数
	putchar('\n');
	return 0;
}

void printb(int x,int n)
{
	if(n>0)
	{
		putchar('0'+((unsigned)(x&(1<<(n-1)))>>(n-1)));		//输出第n位
		printb(x,n-1);						//归调用,输出x的后n-1位
	}
	
}

 

将任一整数转换为四进制形式

#include <stdio.h>

int main()
{
	void printq(int,int);
	int x;
	printf("Input number:");
	scanf("%d",&x);
	printf("number of decimal form:%d\n",x);
	printf("it's binary form:");
	printq(x,sizeof(int)*8);	//x:整数,sizeof(int):int型在内存中所占的字节数,sizeof(int)*8:int型对应的位数
	putchar('\n');
	return 0; 
}

void printq(int x,int n)		//四进制转换
{
	for(;n>0;n=n-2)
	{
		putchar('0'+((unsigned)(x&(3<<(n-2)))>>(n-2)));	//注意,这里不能写11,要写二进制为11的数,即十进制的3。
	}
}


将任一整数转换为八进制形式

#include <stdio.h>

int main()
{
	void printo(int,int);
	int x;
	printf("Input number:");
	scanf("%d",&x);
	printf("number of decimal form:%d\n",x);
	printf("it's binary form:");
	printo(x,sizeof(int)*8);	//x:整数,sizeof(int):int型在内存中所占的字节数,sizeof(int)*8:int型对应的位数
	putchar('\n');
    return 0;
}

void printo(int x,int n)		//八进制转换
{
	for(n=n+1;n>0;n=n-3)		//初始值要修改,否则,移位到最后位置不能对齐
	{
		putchar('0'+((unsigned)(x&(7<<(n-3)))>>(n-3)));
	}
}


 

数制转换_第1张图片

 

 

你可能感兴趣的:(c,printf,sizeof,进制转换)