c语言 程序设计 关于二进制 例如1)输入并显示 函数 Y(x)=x^5+x^3+x^2+1 G(x)=x^3+x^2+1 ;2)然后根据G(x) 得到二进制数1101 (其中1101是这样得来的,x^3 一个1,x^2 一个1,X^1 没有,就一个0.最后数字1
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/19 21:51:51
c语言 程序设计 关于二进制 例如1)输入并显示 函数 Y(x)=x^5+x^3+x^2+1 G(x)=x^3+x^2+1 ;2)然后根据G(x) 得到二进制数1101 (其中1101是这样得来的,x^3 一个1,x^2 一个1,X^1 没有,就一个0.最后数字1
c语言 程序设计 关于二进制
例如
1)输入并显示 函数 Y(x)=x^5+x^3+x^2+1 G(x)=x^3+x^2+1 ;
2)然后根据G(x) 得到二进制数1101 (其中1101是这样得来的,x^3 一个1,x^2 一个1,X^1 没有,就一个0.最后数字1 还是数字1 所以得出1101)Y(x)得到101101
3)然后101101 和1101 得异或 其中1101为被除数.
上面1 2 3 怎么实现啊?可以提供下思路么?有具体最好
c语言 程序设计 关于二进制 例如1)输入并显示 函数 Y(x)=x^5+x^3+x^2+1 G(x)=x^3+x^2+1 ;2)然后根据G(x) 得到二进制数1101 (其中1101是这样得来的,x^3 一个1,x^2 一个1,X^1 没有,就一个0.最后数字1
下面是我写的代码:
/*---------------------------------代码--------------------------------------*/
#include
#include
// 转化后的二进制最多的位数
#define MAX_BIN_LENGHT 100
// 输入的表达式最多的字符数
#define MAX_EXP_LENGHT 100
// 根据表达式得到二进制数
void getBinary(char *express,int binary[MAX_BIN_LENGHT]);
// 根据两个二进制数,异或得到结果
void getXOR(int binaryY[MAX_BIN_LENGHT],int binaryG[MAX_BIN_LENGHT],int binaryResult[MAX_BIN_LENGHT]);
// 打印二进制数
void printBinary(int binary[MAX_BIN_LENGHT]);
int main(int argc,char *argv[])
{
int binaryY[MAX_BIN_LENGHT]={0}; // 存放Y(x)转化后的二进制数
int binaryG[MAX_BIN_LENGHT]={0}; // 存放G(x)转化后的二进制数
int binaryResult[MAX_BIN_LENGHT]={0}; // 存放两个二进制数异或后的结果
char express[MAX_EXP_LENGHT]; //存放输入的表达式
printf("请输入Y(x)表达式:\n");
scanf("%s",express);
getBinary(express,binaryY);
printf("请输入G(x)表达式:\n");
scanf("%s",express);
getBinary(express,binaryG);
// 得到异或结果
getXOR(binaryY,binaryG,binaryResult);
printf("\nY(x)的二进制为:");
printBinary(binaryY);
printf("G(x)的二进制为:");
printBinary(binaryG);
printf("二者异或结果为:");
printBinary(binaryResult);
return 0;
}
//
void printBinary(int binary[MAX_BIN_LENGHT])
{
/*
*因为binary数组中binary[0]存放的是二进制的最低位,binary[MAX_BIN_LENGHT-1]存放的是二进制的最高位,
*所以输出二进制数时,必须要将数组倒序输出
*/
int i;
for(i=MAX_BIN_LENGHT-1;i>=0;i--)
{
if(binary[i]==1)
{
for(;i>=0;i--)
{
printf("%d",binary[i]);
}
}
else if(i==0)
{
printf("%d",binary[i]);
}
}
printf("\n");
}
/*----------------------------------测试结果-------------------------------------*/
请输入Y(x)表达式:
Y(x)=x^5+x^3+x^2+1
请输入G(x)表达式:
G(x)=x^3+x^2+1
Y(x)的二进制为:101101
G(x)的二进制为:1101
二者异或结果为:100000
/*-----------------------------------------------------------------------*/
下面是一些问题:
1.你的第三条中写道“3)然后101101 和1101 得异或 其中1101为被除数.”,这一条我没怎么看明白,这两个数异或哪里来的被除数啊?这一点我有点疑惑,在程序中我把你的第3条理解为求二者的异或值.
2.这个程序中是假设你输入的表达式是完全符合标准的,没有对一些错误的输入(比如输入Y(x)=x^dd+x^001+x^e2e+34+gg)这一类错误表达式的检测,这一点要注意.
3.开头的两个宏定义二进制最多的位数MAX_BIN_LENGHT、输入的表达式最多的字符数MAX_EXP_LENGHT,你可以根据自己的需要自行更改其具体的大小.