专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
TI
【转】进制互换程序
2019-07-19 14:07
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
TI MCU
3989
2
1784
利用位操作以及掩码进行进制间的相互转换。
例一:将输入的一个整型数,转换成相应的二进制数
[objc]
view plain
copy
#include <stdio.h>
void int2bin(int num)
{
int i;
int temp;
int mask = 1;
for(i = 31;i >= 0;i --)
{
temp = ((num >> i) & mask);
printf("%d",temp);
if(i % 4 == 0)
{
printf(" ");
}
}
printf(" ");
}
int main()
{
int num;
printf("Please input an integer: ");
scanf("%d",&num);
int2bin(num);
return 0;
}
调试结果如下:
[objc]
view plain
copy
Please input an integer:
2345
0000 0000 0000 0000 0000 1001 0010 1001
上面的程序是将输入的整型数进行左移,我在下面试一下用右移的方法实现该功能
[objc]
view plain
copy
#include <stdio.h>
void int2bin(int num)
{
int i;
unsigned int temp;
unsigned int mask = 0x80000000;
for(i = 1;i <= 32;i ++)
{
temp = (unsigned int)((unsigned int)(num << i) & mask);
printf("%d",temp);
if(i % 4 == 0)
{
printf(" ");
}
}
printf(" ");
}
int main()
{
int num;
printf("Please input an interger: ");
scanf("%d",&num);
int2bin(num);
return 0;
}
调试结果为:
[objc]
view plain
copy
Please input an integer:
2345
0000 0000 0000 0000 0000 1001 0010 1001
例二:将整型数转换成相应的八进制数
[objc]
view plain
copy
#include <stdio.h>
#define MAX_SIZE 1024
void int2oct(int num)
{
int i;
int temp1;
int temp = 1;
int step = -1;
char oct[MAX_SIZE];
oct[0] = '0';
while(num - temp >= 0)
{
temp = temp * 8;
step ++;
}
temp = temp / 8;
for(i = 1;i <= step + 1;i ++,temp = temp / 8)
{
temp1 = num / temp;
num = num - temp * temp1;
oct
= temp1 + '0';
}
oct
= ' ';
printf("The oct is:%s. ",oct);
}
int main()
{
int num;
printf("Please input an integer: ");
scanf("%d",&num);
int2oct(num);
return 0;
}
调试结果为:
[objc]
view plain
copy
Please input an integer:
36475
The oct is:0107173.
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2条回答
联通移不动
2019-07-19 15:22
例三:将整型数转换成相应的十六进制数
[objc]
view plain
copy
#include <stdio.h>
void int2hex(int num)
{
int i;
int temp;
int mask = 0xf;
char hex[11] = {0};
hex[0] = '0';
hex[1] = 'x';
for(i = 0;i < 8;i ++)
{
temp = num & mask;
num = num >> 4;
if(temp >= 10)
{
hex[9 - i] = temp - 10 + 'a';
}
else
{
hex[9 - i] = temp + '0';
}
}
hex[10] = ' ';
printf("The hex is:%s. ",hex);
}
int main()
{
int num;
printf("Please input an integer: ");
scanf("%d",&num);
int2hex(num);
return 0;
}
调试结果为:
[objc]
view plain
copy
Please input an integer:
2351
The hex is:0x0000092f.
例四:将二进制数转换成相应的八进制数
[objc]
view plain
copy
#include <stdio.h>
#include <string.h>
#define MAX_SIZE 1024
charchar * bin2oct(charchar * bin,int len)
{
int i;
int j;
int oct_len;
int num = 0;
int count = 0;
int temp = 1;
static char oct[MAX_SIZE];
oct[0] = '0';
if(len % 3 == 0) //判断八进制数是几位
{
oct_len = len / 3;
}
else
{
oct_len = (len / 3) + 1;
}
j = oct_len;
for(i = len - 1;i >= 0;i --)
{
if(count < 3)
{
num = (bin
- '0') * temp + num;
temp = temp * 2;
count ++;
if(i == 0)
{
oct[1] = num + '0';
}
}
else
{
oct[j] = num + '0';
num = 0;
temp = 1;
count = 0;
i ++; //再返回一步
j --;
}
}
oct[oct_len + 1] = ' ';
return oct;
}
int main()
{
int len;
char bin[MAX_SIZE];
printf("Please input the bindary: ");
scanf("%s",bin);
len = strlen(bin);
charchar * oct = bin2oct(bin,len);
printf("The oct of the binary is:%s. ",oct);
return 0;
}
调试结果为:
[objc]
view plain
copy
Please input the bindary:
1101011100
The oct of the binary is:01534.
其实二进制转换成八进制有两种方法,一种是将二进制先转换成十进制数再转换成八进制数,我在下面将给大家列出;另一种就是我上面所给出的程序,直接从二进制变换到八进制,即从最低位开始,每三个二进制数为一组,转换成相应的八进制数,如果二进制的个数不是三的倍数,则直接前若干个数值输出位相应的八进制数,相当于最高位补0,保证二进制的个数是三的倍数。
another:
[objc]
view plain
copy
#include <stdio.h>
#include <string.h>
#define MAX_SIZE 1024
charchar * bin2oct(charchar * bin)
{
int i;
int len;
int num;
int ten = 0;
int temp = 1;
int temp1 = 1;
int step = -1;
static char oct[MAX_SIZE];
len = strlen(bin);
while(*bin != ' ')
{
ten = ten + (* (bin + len - 1) - '0') * temp;
temp = temp * 2;
bin ++;
len = len - 2;
}
while(ten - temp1 >= 0)
{
temp1 = temp1 * 8;
step ++;
}
temp1 = temp1 / 8;
oct[0] = '0';
for(i = 1;i <= step + 1;i ++,temp1 = temp1 / 8)
{
num = ten / temp1;
ten = ten - num * temp1;
oct
= num + '0';
}
oct
= ' ';
return oct;
}
int main()
{
char bin[MAX_SIZE];
printf("Please input the binary: ");
scanf("%s",bin);
charchar * oct = bin2oct(bin);
printf("The oct of the binary is:%s. ",oct);
return 0;
}
调试结果为:
[objc]
view plain
copy
Please input the bindary:
101011101011
The oct of the binary is:05353.
加载中...
查看其它2个回答
一周热门
更多
>
相关问题
CPLD的方波输出
4 个回答
11个版本Quartus II 软件下载,安装包网盘合集,附教程,47G!
20 个回答
请大家帮忙到21IC发展大家谈支持我申请新版面
20 个回答
【通知】21ic中国电子网服务条款 (所有人员必读)
1 个回答
满载而归乙亥年,大展鸿途庚子年---集签赢好礼
20 个回答
相关文章
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
TI
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
[objc] view plain copy
调试结果为:
[objc] view plain copy
例四:将二进制数转换成相应的八进制数[objc] view plain copy
调试结果为:
[objc] view plain copy
其实二进制转换成八进制有两种方法,一种是将二进制先转换成十进制数再转换成八进制数,我在下面将给大家列出;另一种就是我上面所给出的程序,直接从二进制变换到八进制,即从最低位开始,每三个二进制数为一组,转换成相应的八进制数,如果二进制的个数不是三的倍数,则直接前若干个数值输出位相应的八进制数,相当于最高位补0,保证二进制的个数是三的倍数。
another:
[objc] view plain copy
调试结果为:
[objc] view plain copy
一周热门 更多>