我参加了一次考试,从那以后我一直在努力奋斗。 你有一个整数(如13,6,21,4)的数组,我需要做的输出,看起来像:打印输出:整数作为2的幂的总和
13 = 2^3 + 2^2 + 2^0
6 = 2^2 + 2^1
21 = 2^4 + 2^2 + 2^0
4 = 2^2
这里就是我这么远。
#include <stdio.h>
#define MAX 100
int main() {
int niz[MAX], nizb, n, i, ones, k;
while(1) {
printf("Array length: ");
scanf("%d", &n);
if (n<=0 || n>MAX) break;
printf("Array elements: ");
for(i=0;i<n;i++){
scanf("%d", &niz[i]);
if (niz[i] <=0) {
printf("Error! Wrong value. Enter new one: ");
scanf("%d", &niz[i]);
}
}
for(i=0;i<n;i++) {
nizb = niz[i];
ones = 0;
for(k=0; k < 16; k++) {
//What should i do here?
}
}
}
}
我被困在这里。我不知道应该使用多少位,以及C如何看到这些整数的位。我使用var'k'来添加格式为'2^3 + 2^2 ...'的字符串,其中k是'for'迭代的值。我假定整数的长度是16,但我真的不确定,因为我们在一张纸上做了这个。
我想说的是感谢所有人!
这更多的是一个数学问题,但是如何确定纸上的2补码(没有计算机的帮助)?只要你知道,你可以开始翻译它的计算机。 –
如果你不允许或使用负数,你为什么在讨论二的补码? – cHao
问我的教授:( –