无符号幅度和二进制补码

我已经编写了一个代码来计算给定二进制代码的无符号幅度和二进制补码,除了我没有得到我应该的值。 我不确定我的代码究竟出了什么问题。 我希望不要在我的代码中使用幂函数和乘法函数。 我在下面发布了我的代码,请让我知道为什么我得到的值不正确。 #include “stdio.h” #define MAX_BITS 32 #define ENTER ‘\n’ #define NUMBER_TWO 2 int main() { int unsignedMag; int twosComp; int negation[MAX_BITS]; int bitStore[MAX_BITS]; char enter; int count; //Input from the User printf(“Enter up to 32 bits (hit ‘enter’ to terminate early): “); //Reads the first bit as a character char bit = […]

逻辑运算符与按位运算符的关键点是什么?

鉴于此声明是一个逻辑操作 ((a > 5) && (b > 4)) 这句话是按位操作的 ((a > 5) & (b > 4)) 以上两个陈述并不等同。 因为(a > 5)是{0,1}的元素 那么,为什么我们需要logical operators & bitwise-operation ? 编辑 :感谢所有的反馈。 关于逻辑运算符的短路行为,我实际上不希望这种行为 – 我正在为GPU编写代码,其中分支会降低性能:短路导致两个分支而不是代码中的一个分支。 对于C中的数值比较,在不需要短路的情况下,似乎逻辑和按位具有相同的行为。 在我的例子中,按位运算比逻辑快。 我为没有将这些细节放在原始post中而道歉。

scanf扫描后从输入中删除了什么?

我经历了很多问题,博客和书籍,但我想我无法正确地解决问题。 scanf扫描后做了什么? 它读取除了空格,制表符和换行符之外的所有内容,但它对换行有什么作用? 扫描输入后,我无法以任何方式删除换行符。 例如,将此视为输入: – 五 ABCDEFGH 现在,我已将5扫描为整数, scanf(“%d”, &i); 但是如何删除’\ n’以便一次读取一个字符前面的所有内容? 我想用: – while((c=getchar())!=’\n’){//Do something} ‘\ n’应该是字符串之后的那个,但是getchar()在5之后得到一个并且循环在甚至运行一次之前终止。 我想我只是错过了一个小技巧。 scanf(“%d”, &i); while((c=getchar())!=’\n’){ //Do something with the character } 输入文件:- 五 ABCDEF 期待while循环运行,而它不运行。 因为它在5.之后捕获’\ n’。我尝试在scanf()和while()之间添加getchar(),但是程序卡住并且什么都不做。

如何在C中按升序对字符串数组进行排序

问题 我已经制作了与其他类似的排序程序 C Program to Sort set of strings in alphabetical order 但我做的程序不起作用。 我认为两者都是一样的,但我的计划给了我废物输出。 另外我想知道其他程序计数设置为5例如它应该从0开始输入6但是它只获得5,如何? 我的计划 #include #include int main() { char str[4][10],temp[10]; int i,j; printf(“Enter strings one by one : \n”); for(i=0;i<5;i++) scanf("%s",str[i]); for(i=0;i<5;i++) for(j=i+1;j0){ strcpy(temp,str[i]); strcpy(str[i],str[j]); strcpy(str[j],temp); } printf(“\nSorted List : “); for(i=0;i<5;i++) printf("\n%s",str[i]); printf("\n\n"); return 0; }

使用if语句与逻辑运算符有什么好处?

我知道if语句可以以各种方式使用,例如带有逻辑运算符的if语句, if … else和嵌套if语句等。 使用逻辑运算符时,例如&&,|| 要确认很多条件,那么代码大小会比使用多个嵌套if语句时小。 使用带有条件运算符的if语句是否有任何其他好处(运行时,调试,编译时益等)?

获取C中字符的EBCDIC值

我需要在C中获得字符的EBCDIC值。我不知道如何。 我必须先获取ASCII值然后从那里获取EBCDIC值吗? 谢谢任何人

如何将数组从函数返回到main

我必须使用该函数打开文件,读取它,将第一个值保存为以下元素(维度)的数量以及seq[]数组中的其他值。 我不知道如何在main中返回dimension和seq[] ; 我需要它,因为我必须在其他函数中使用这些值。 如代码所示,函数返回维度(dim),但我不知道如何返回数组。 #include #include #include #include int leggiSequenza(char *nomeFile, int *seq) { FILE *in; int i; int dim; if((in = fopen(nomeFile, “r”))==NULL) { printf(“Error.\n”); return -1; } fscanf(in, “%d”, &(dim)); printf(“Find %d values.\n”, dim); if(dim < 0) { printf("Errore: negative value.\n"); return -1; } seq = (int*) malloc(dim*sizeof(int)); i=0; while(!feof(in) && i<(dim)) […]

从另一个文件调用节点

我知道在编程中,保持简单并能够改变是很重要的。 所以对我而言,这意味着使用不同的文件和function并将它们分开以便更容易隔离故障并提高可读性非常重要。 我是C的新手,我不明白该怎么做。 我有我的nodeTest.h #include #include struct nodeTest { int data; struct nodeTest* next; }; 然后我有另一个文件试图调用该结构 #include #include #include “nodeTest.h” nodeTest* first = (nodeTest*)malloc(sizeof(nodeTest)); 我收到一个错误,说nodeTest未声明(不在函数中)。 这是什么意思,为什么我不能使用include来包含struct或typedef?

pthread_create没有足够的空间

我在Windows上使用Pthreads和MinGW。 对pthread_create的调用返回一个错误,该错误转换为“空间不足”。 它指的是什么样的空间? 是线程堆栈空间吗? int scannerThreadReturnValue = pthread_create(&parserThreadHandle, &attr, parserThread, (void *)filename); if(scannerThreadReturnValue != 0) { printf(“Unable to create thread %s\n”, strerror(errno)); } else printf(“Parser thread creation successfull\n”);

与C的Fibonacci序列相比,为什么Haskell这么慢?

我只是Haskell的初学者。 我编写了一个代码来显示Fibonacci序列中的N个数字。 这是我在Haskell中的代码, fib_seq 1 = 1:[] fib_seq 2 = 1:1:[] fib_seq n = sum(take 2 (fib_seq (n-1))):fib_seq (n-1) 当我在GHCI中为更高的数字运行此代码(例如fib_seq 40时,需要很长时间来评估它并且我的计算机挂起并且我必须中断。 但是,当我在C中写出相同的逻辑时,(我只是打印而不是将其保存在列表中), #include int fib_seq (int n){ if(n==1) return 1; else if(n==2) return 1; else return fib_seq(n-1)+fib_seq(n-2); } void print_fib(int n){ if(n==0) return; else printf(“%i “, fib_seq(n)); print_fib(n-1); } int main(int argn, char* argc){ print_fib(40); […]