#include<stdioh>
#include<stringh>
static char QUINARY = "01234";
static char OCTONARY = "01234567";
static char FIFTNARY = "0123456789ABCDE";
static char buff[10];
char toQuinary(int num);
char toOctonary(int num);
char toFifnary(int num);
char reverse(char str);
int main(void)
{
int flag = 1;
int num = 0;
int choice = 0;
while(flag)
{
printf("请输入一个三位数:");
scanf("%d",&num);
printf("转换为几进制? 1--五进制 2--八进制 3--十五进制 0--退出\t");
scanf("%d",&choice);
char result = "";
switch(choice)
{
case 1:
result = toQuinary(num);
printf("%s\n",result);
break;
case 2:
result = toOctonary(num);
printf("%s\n",result);
break;
case 3:
result = toFifnary(num);
printf("%s\n",result);
break;
default:
flag = 0;
break;
}
}
return 0;
}
char toQuinary(int num)
{
if(num <= 0) return "0";
int i = 0;
while(num > 0)
{
int ret = num % 5;
buff[i] = QUINARY[ret];
num /= 5;
i++;
}
buff[i]='\0';
return reverse(buff);
}
char toOctonary(int num)
{
if(num <= 0) return "0";
int i = 0;
while(num > 0)
{
int ret = num % 8;
buff[i] = OCTONARY[ret];
num /= 8;
i++;
}
buff[i]='\0';
return reverse(buff);
}
char toFifnary(int num)
{
if(num <= 0) return "0";
int i = 0;
while(num > 0)
{
int ret = num % 15;
buff[i] = FIFTNARY[ret];
num /= 15;
i++;
}
buff[i]='\0';
return reverse(buff);
}
char reverse(char str)
{
int length = strlen(str);
char copy[length+1];
int i = 0;
for(i=0; i<length;i++)
{
copy[i] = str[length-i-1];
}
copy[i] = '\0';
strcpy(str,copy);
return str;
}
记得有过这方面的论述,在所有进制方面,2进制效率最低,3进制最高。当然,理论上
e进制最高。但是,如果要实现两态门,2进制很容易,实现3态门,则需要的线路超过很多,最终的结果是,从芯片门电路使用的角度讲,2进制最高效,3进制最浪费。不知道我理解的对不对。
不知道cetyhb的优点是什么,不过,从计算原理的角度上讲,比基因计算机、量子计算机要落后很多吧,后二者的眼睛也没有投入非常多的力量,何况只是三进制呢?
我的看法不一定对,可以讨论。
PLC将一个十进制的数分解成三个十进制的数 *** 作方法如下:
1、首先打开plc编程软件,编写一条以X0控制十进制数据传送的指令,在X0触点后直接输入“MOVK5D0”表示把十进制数5传送至D0寄存器。
2、然后在写一条计数指令,用C0对M8013进行计数。
3、可以讲计数器的当前数值传送至数据寄存器D1,指令为“MOVC0D1”。
4、编写好程序之后进行转换,然后对程序进行模拟,点击测试按钮即可将程序写入模拟PLC。
5、依次点击模拟调试工具的“菜单启动”—“内存继电器监视”。
6、然后将测试按钮X调用,点击软元件—位软元件窗口,然后选择X。
7、这时可以看到,点击X0可以将十进制5传送至数据寄存器D0;点击X1时,可以将C0的当前数据传送至D1。PLC是一种存储程序的控制器,用户根据某一对象的具体控制要求,编制好控制程序后,用编程器将程序输入到PLC(或用计算机下载到PLC)的用户程序存储器中寄存。PLC的控制功能就是通过运行用户程序来实现。
数码管静态显示3十六进制是指在数码管上显示一个固定的十六进制数值,不进行任何动态变化。十六进制是一种数制,它由0-9和A-F这16个数码组成,相当于二进制的4位,可以更方便地表示二进制数。在数码管上显示十六进制数值需要将其转换为二进制数值,然后通过控制数码管的各个显示段来显示出来。
具体实现方法是将十六进制数值转换为二进制数值,然后将二进制数值分别赋值给对应的数码管段。例如,十六进制数值3对应的二进制数值为0011,将其分别赋值给数码管的第一位和第二位,就可以在数码管上显示出3的十六进制数值。
需要注意的是,在将十六进制数值转换为二进制数值时,需要注意高位补0。例如,十六进制数值A对应的二进制数值为1010,需要将其补齐为00001010再进行显示。
总之,数码管静态显示3十六进制需要将其转换为二进制数值,并将其分别赋值给对应的数码管段,才能在数码管上显示出来。
#include"stdioh"
void main()
{
unsigned int a=0;
printf("Please input a 3bits hex mod number:");
scanf("%x",&a);
printf("%d",a); //这里输出十进制
}
//通过输出格式控制就可以实现了。
//如果是输出BCD码就需要计算。
#include"stdioh"// function below code a hex_numb to a bcd_code;
unsigned short bcd(unsigned short hex_number)
{unsigned short bcd_result=0;
bcd_result|=(hex_number/1000)<<12;
bcd_result|=((hex_number%1000)/100)<<8;
bcd_result|=((hex_number%100)/10<<4);
bcd_result|=hex_number%10;
return bcd_result;}
void main()
{unsigned int a=0,b=0;
printf("Please input a 3bits hex mod number:");
scanf("%x",&a);
b=bcd(a);
printf("%x",b);//这里输出格式16进制
}
程序如下:
main()
{
char op,str[80];
int i,j,s,n,m,ptr;
for (i=0;i<=6561;i++) /i是每一种枚举的情况,把i分解为八位3进制数,每一位表示每一个位置的符号/
{
s=0; /该方式下的和/
m=1; /作 *** 作数/
n=i; /获取i在3进制下的每一位会破坏i,所以借用变量n来获取/
op='+'; /第一次 *** 作方式为+/
ptr=0; /指针用来记录运算过程/
str[ptr++]='1'; /首先记录一个1/
for (j=2;j<=9;j++) /八次循环,每次的下一个 *** 作数是j/
{
if (n%3) /3进制下的第j-1位数,如果不是0,则要完成先前的 *** 作/
{
if (op=='+') s+=m; else s-=m;m=j;
}
switch(n%3) /根据这一位的情况进行处理/
{
case 0:m=m10+j;break;
case 1:op='+';break;
case 2:op='-';break;
}
if (n%3) str[ptr++]=op; /记录运算模式/
str[ptr++]='0'+j;
程序运行结果为:
FOUND: 123-45-67+89=100
FOUND: 12-3-4+5-6+7+89=100
FOUND: 12+3+4+5-6-7+89=100
FOUND: 123+4-5+67-89=100
FOUND: 1+2+3-4+5+6+78+9=100
FOUND: 12+3-4+5+67+8+9=100
FOUND: 1+23-4+56+7+8+9=100
FOUND: 1+2+34-5+67-8+9=100
FOUND: 1+23-4+5+6+78-9=100
FOUND: 123+45-67+8-9=100
FOUND: 123-4-5-6-7+8-9=100
以上就是关于用C语言编写程序,输入任意一个十进制的三位数,将它分别转化为五进制、八进制和十五进制全部的内容,包括:用C语言编写程序,输入任意一个十进制的三位数,将它分别转化为五进制、八进制和十五进制、我查了下苏联三进制计算机CETYHB.看起来比二进制牛B多了为什么没得到重视以及现在还有这类计算机研、PLC如何将一个十进制的数分解成三个十进制的数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)