Mod运算符不在C中工作
我试图实现一个密码,我应该只在位工作。然而,2上的mod运算符似乎给出了2的值。谁能告诉我出了什么问题吗?据我所知,模数运算符工作不正常 注:fcsr1和fcsr2是仅提供80位长阵列作为输入的函数。数组值都是0或1Mod运算符不在C中工作,c,modulo,C,Modulo,我试图实现一个密码,我应该只在位工作。然而,2上的mod运算符似乎给出了2的值。谁能告诉我出了什么问题吗?据我所知,模数运算符工作不正常 注:fcsr1和fcsr2是仅提供80位长阵列作为输入的函数。数组值都是0或1 #include<stdio.h> int main(){ int i=0,n=0; int ka[80],kb[80],rs[n]; int *k1,*k2; printf("Enter t
#include<stdio.h>
int main(){
int i=0,n=0;
int ka[80],kb[80],rs[n];
int *k1,*k2;
printf("Enter the number of keystream bits : ");
scanf("%d",&n);
//Initialize all as 1
for(i=0;i<80;i++){
ka[i]=1;
kb[i]=1;
}
int mb=0,ms=0;
//Updating all 81 times
k1=fcsr1(ka,&mb,81);
k2=fcsr2(kb,&ms,81);
for(i=0;i<n;i=i+2){
k1=fcsr1(k1,&mb,1);
k2=fcsr2(k2,&ms,1);
int x0=k1[23];
int x1=k1[73];
int x2=k2[5];
int x3=k2[9];
int x4=k2[29];
int x5=k1[51];
//printf("%d %d %d %d %d %dNext",x0,x1,x2,x3,x4,x5);
rs[i]=((x0*x1*x2*x4*x5+x0*x1*x2*x5+x0*x1*x2+x0*x1*x3*x5+x0*x1*x4*x5+x0*x1*x4+x0*x1*x5+x0*x1+x0*x2*x3*x4*x5+x0*x2*x3*x5+x0*x2*x3+x0*x2*x4*x5+x0*x2*x4+x0*x2+x0*x3*x4*x5+x0*x3*x4+x0*x3*x5+x0*x3+x0*x4*x5+x0*x4+x1*x2*x3*x5+x1*x2*x3+x1*x2*x4*x5+x1*x2*x4+x1*x2*x5+x1*x3*x4*x5+x1*x3*x4+x1*x3+x1*x4*x5+x1*x4+x1*x5+x2*x3*x5+x2*x3+x2*x5+x2+x3*x5+x4*x5+x5)%2);
k2=fcsr2(k2,&ms,1);
x0=k1[23];
x1=k1[73];
x2=k2[6];
x3=k2[10];
x4=k2[30];
x5=k1[68];
rs[i+1]=((x0*x1*x2*x4*x5+x0*x1*x2*x5+x0*x1*x2+x0*x1*x3*x5+x0*x1*x4*x5+x0*x1*x4+x0*x1*x5+x0*x1+x0*x2*x3*x4*x5+x0*x2*x3*x5+x0*x2*x3+x0*x2*x4*x5+x0*x2*x4+x0*x2+x0*x3*x4*x5+x0*x3*x4+x0*x3*x5+x0*x3+x0*x4*x5+x0*x4+x1*x2*x3*x5+x1*x2*x3+x1*x2*x4*x5+x1*x2*x4+x1*x2*x5+x1*x3*x4*x5+x1*x3*x4+x1*x3+x1*x4*x5+x1*x4+x1*x5+x2*x3*x5+x2*x3+x2*x5+x2+x3*x5+x4*x5+x5)%2);
//printf("%d %d %d %d %d %dEnd",x0,x1,x2,x3,x4,x5);
printf("%d %d ",rs[i],rs[i+1]);
}
}
int i=0,n=0;
int-ka[80],kb[80],rs[n];
当n的值改变时,rs的大小不会神奇地改变
大概rs[i]被某些赋值给xj的i和j的值所覆盖。可能是因为您给rs分配了零元素,所以答案是垃圾。检查rs数组的大小。n=0,然后声明rs[n]。在读取n的值之前,移动rs的声明:
您是否有意将rs的尺寸设置为0?n=0,int-rs[n]数组越界访问是典型的c失败。。。
Enter the number of keystream bits :
24
0 0 1 0 0 1 2 1 1 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1
--------------------------------
Process exited with return value 24
Press any key to continue . . .
int ka[80],kb[80]
int *k1,*k2;
printf("Enter the number of keystream bits : ");
scanf("%d",&n);
// validate that n is > 0
int rs[n];