导航:首页 > 编程语言 > python十进制转r进制

python十进制转r进制

发布时间:2025-01-28 21:56:23

Ⅰ 十进制的数如何转换成R进制的数

将十进制转化为R进制(R>=2)整数部分除R取余直到商为零,将这些余数逆序排列。小数部分乘以R取整直到无小数,最后两者相加。
如123.45
123/16=7
余11
11是B
7/16=0
余7
7
小数部分
0.45*16=7.2
7
0.2*16=3.2
3
...
最后结果:7B.7333...

Ⅱ 利用栈的基本操作实现将任意一个十进制整数转化为R进制整数

看到这道题目想到了三个方法,依次给你列出(栈的方式,递归,数组)
栈的方式:
//思路:将十进制数(number)除以R取余,让取得的余数(number Mod R )进栈,让十进制数变为
number/R,重复上述过程,直到number等于0为止,然后依次从栈中取出数据即为所求,直到栈为空,下面是实现的代码:
#include<stdio.h>
#include<stdlib.h>
#define MAX_SIZE 80
typedef struct
{//栈的数据结构,采用数组
char data[MAX_SIZE];
int top;
}stack;
int isfull(stack s)
{//判断栈是否已满
return (++s.top==MAX_SIZE);
}
int isempty(stack s)
{//判断栈为空
return s.top==-1;
}
void push(stack * s,char in_data)
{//进栈
if(isfull(*s))
{
printf("栈已满,不能执行操作!\n");
exit(1);
}
s->data[++s->top]=in_data;
}
void pop(stack *s)
{//出栈
if(isempty(*s))
{
printf("栈已空,不能执行操作!\n");
exit(1);
}
s->top--;
}
char top_value(stack *s)
{//取栈顶元素
if(isempty(*s))
{
printf("栈已空,不能执行操作!\n");
exit(1);
}
return s->data[s->top];
}
int main(int argc,char** argv)
{
int number;
stack result;
result.top=-1;
int r_range;
printf("输入转换的数据和对应的进制:");
scanf("%d%d",&number,&r_range);
printf("%d对应的%d进制为:",number,r_range);
while(number!=0)
{
char input;
if(number%r_range>=10)
input=((number%r_range)-10)+'a';
else
input=((number%r_range)+'0');
push(&result,input);
number=number/r_range;
}
while(!isempty(result))
{
putchar(top_value(&result));
pop(&result);
}
return 0;
}
====================================================================
递归的方式:定义一个输出字符串,让十进制数(number)除以要转换的进制R 若结果不为0,则继续执行前述操作,直到得到除的结果为零,此时number除以R取其余数,将其结果(number Mod R)映射到指定的输出字符数组中下标输出即为结果(描述的不是很好,你看代码吧)
//用这种方法也比较可以
#include<stdio.h>
void ten_to_any(int number,int range_t)
{//递归实现
char text[]="0123456789abcdef";
int k=number/range_t;
if(k)
ten_to_any(k,range_t);
putchar(text[number%range_t]);
}
int main()
{

int number,r_range;
while(1)
{
printf("\n输入转换的数据,和对应进制:");
scanf("%d%d",&number,&r_range);
if(r_range>16||r_range<2)
{
printf("超出了范围!");
break;
}
printf("%d对应的%d进制为:",number,r_range);
ten_to_any(number,r_range);
}
return 0;
}
//采用数组的形式
这是我上次回答别人的
用一个字符串保存转换的结果(str[80])假设十进制数为number,转换的进制为digits,则将numbers%digits(根据余数的情况做相应处理)结果保存在字符串str中,将numbers变为numbers/digits;直到numbers为零。得到的结果为逆序,需要将其倒转,倒转后即为所求。
//-----------c语言实现10进制转2~16进制
#include<stdio.h>
#include<string.h>
void TentoAny(int number,char *str,int digits)
{
int i=0;
if(digits>16||digits<2)//非2~16进制则直接退出
return ;
while(number)
{
if(number%digits>=10)
{
str[i++]='A'+(number%digits-10);
}
else
{
str[i++]=number%digits+'0';
}
}
str[i]='\0';
strrev(str);//strrev函数定义在string.h中的,是对字符串做逆序处理的函数
//这里需要逆序的原因是因为得到的结果为该进制的逆序
}
int main()
{
int number,i;
char str[80];
printf("输入一个十进制数:");
scanf("%d",&number);
printf("\n---------2到16进制对应关系----------\n");
for(i=2;i<=16;i++)
{
TentoAny(number,str,i);
printf("%d转换为%d进制为:%s\n",number,i,str);
}
return 0;
}
//希望对你有所帮助

Ⅲ Python二级中的进制转换:看这一篇就够了

在计算机领域,进制转换是基础且常见的操作,虽在Python二级考试中权重不高,但掌握这些技能对于编程实践十分重要。

进制转换包括:二进制、八进制、十六进制与十进制之间的转换。

一、进制转换为十进制

对于不同进制数转换为十进制数,我们采用“按权展开”法,从右到左计算每一位置上的数值与对应权重的乘积,再将结果相加。例如:

  1. 二进制转十进制:从右至左,每位数值乘以2的幂次方。例如,二进制1011转换为十进制是1*2^3 + 0*2^2 + 1*2^1 + 1*2^0 = 11。

  2. 八进制转十进制:从右至左,每位数值乘以8的幂次方。例如,八进制347转换为十进制是7*8^0 + 4*8^1 + 3*8^2 = 231。

  3. 十六进制转十进制:从右至左,每位数值乘以16的幂次方,其中A-F分别代表10-15。例如,十六进制1A3转换为十进制是3*16^0 + 10*16^1 + 1*16^2 = 419。

二、十进制转换为进制

将十进制数转换为其他进制采用“除R取余”法。具体步骤为:不断将十进制数除以目标进制数,记录每次除法的余数,最后将余数倒序排列。例如:

  1. 十进制转二进制:不断除以2,记录余数,结果为11011101。

  2. 十进制转八进制:不断除以8,记录余数,结果为137。

  3. 十进制转十六进制:不断除以16,记录余数,对于大于9的余数,使用A-F字母表示,结果为ABC。

三、二进制、八进制和十六进制的互转

为简化记忆,可以先将非十进制数转换为十进制,再进行其他进制的转换。如二进制转十六进制,先转换为十进制,再将十进制数转换为十六进制。

四、学习总结

进制转换基于权重概念,不同进制的权重不同(二进制为2的幂,八进制为8的幂,十六进制为16的幂)。掌握上述方法,能够轻松进行任意进制间的转换,对于编程实践和计算机科学的学习至关重要。

阅读全文

与python十进制转r进制相关的资料

热点内容
androidui入门书籍 浏览:739
单片机二进制文件加密 浏览:116
怎样给文件夹加上级目录 浏览:163
怎么给app加密苹果手机 浏览:191
安卓系统怎么修复 浏览:394
09款轩逸空调压缩机继电器在哪里 浏览:335
jodconverter源码 浏览:258
小米app免流是什么免流呢 浏览:359
车贷还完办理解压需要费用吗 浏览:180
草书字典pdf 浏览:69
理财app怎么看绑的银行卡号 浏览:106
互斥微命令 浏览:882
linux扫描病毒 浏览:328
文件夹中显示pdf内容 浏览:421
java数组题 浏览:232
铜制作文件夹 浏览:803
食安员app怎么下载证书 浏览:925
php时间戳最大值 浏览:595
ad文档加密 浏览:404
phpini上传大小 浏览:935