进制数的转化

本文介绍了如何通过C语言实现从十进制数转换到二进制与十六进制的方法。提供了两个具体的函数实现示例,帮助读者理解不同进制之间的转换过程。

十进制转化成十六进制:

void In_to_a16(int ix){
	long iy=0;
	int a1=0;
	a1=(ix&0x000000FF);//提取最高位字节
	int a2=0;
	a2=(ix&0x0000FF00)>>8;
	int a3=0;
	a3=(ix&0x00FF0000)>>16;
	int a4=0;
	a4=(ix&0xFF000000)>>24; //提取最低位字节
	char buffer[10];
	sprintf(buffer,"%.2X%.2X%.2X%.2X",a4,a3,a2,a1);
	printf("%s",buffer); 
}

十进制转化成2进制:

void In_to_a2(int ix){
	 char a[64];
	 int i=0;
	 while(ix){
	 	//cout<<"ix="<<ix<<endl;
		 if(ix&1){
	 	    a[i]='1';
	 	    i++;
			ix=ix>>1;	
		 }else{
		 	a[i]='0';
		 	i++;
		 	ix=ix>>1;
		 }
	 }
	 for(int k=0;k<i;k++){
	 	printf("%c",a[k]);
	 }
}

### 回答1: 要利用栈的性质将十进制数转化为八进制数或十六进制数,可以通过以下步骤进行。 1. 将输入的十进制数除以8或16,得到商和余数。 2. 把余数依次入栈。 3. 将商继续除以8或16,重复步骤2直到商为0为止。 将余数依次从栈中弹出,并转换成相应的八进制或十六进制的符号,组成最终的结果。 将十进制数转化为八进制数的示例: 假设输入的十进制数为123。 1. 第一次除以8,得到商15和余数3。此时栈中入栈3。 2. 第二次除以8,得到商1和余数7。此时栈中入栈7。 3. 第三次除以8,得到商0和余数1。此时栈中入栈1。 4. 商已经为0,停止运算。 5. 从栈中弹出的数字依次为1,7,3,组成结果为173,即十进制数123的八进制表示。 同理,将十进制数转化为十六进制数的步骤相同。只需将除数改为16即可。 值得注意的是,在将余数入栈时,如果余数大于9,则需要将余数转换成十六进制的字母表示,例如10用A表示,11用B表示,依此类推。 以上便是利用栈的性质将十进制数转化为八进制数或十六进制数的方法。通过栈的后进先出的特点,可以按照顺序将得到的余数取出,并组成最终的结果。 ### 回答2: 利用栈的性质可以将十进制数转化成八进制数和十六进制数。 将十进制数转化成八进制数的方法如下: 1. 将十进制数不断除以8,将得到的余数压入栈中,直到商为0。 2. 从栈顶开始,依次出栈得到的余数,得到的序列即为十进制数转化成八进制数的结果。 例如,将十进制数27转化成八进制数的过程如下: 27 ÷ 8 = 3 … 3(余数3) 3 ÷ 8 = 0 … 3(余数3) 由此得到的序列为33,即27的八进制表示。 将十进制数转化成十六进制数的方法如下: 1. 将十进制数不断除以16,将得到的余数压入栈中,直到商为0。 2. 从栈顶开始,依次出栈得到的余数,其中余数大于9的部分需要转化为对应的字母(A表示10,B表示11,以此类推),得到的序列即为十进制数转化成十六进制数的结果。 例如,将十进制数39转化成十六进制数的过程如下: 39 ÷ 16 = 2 … 7(余数7) 2 ÷ 16 = 0 … 2(余数2) 由此得到的序列为27,即39的十六进制表示。 利用栈的性质可以方便地将十进制数转化成八进制数和十六进制数,增加了编程实现转换的便利性。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值