C 用void计算二进制数

C 用void计算二进制数,c,C,如果我使用void numberToBinaryint binaryArr[],int numberOfElements将一个数字转换为一个二进制数,我将如何进行转换?我尝试了一个我从早期实验室使用的代码,但它与程序不兼容。我不知道该怎么处理这个空白部分。目前,我的输出只是二进制: 二进制文件之后没有打印内容 #include <stdio.h> #include <stdlib.h> #include <math.h> #include <wiring

如果我使用void numberToBinaryint binaryArr[],int numberOfElements将一个数字转换为一个二进制数,我将如何进行转换?我尝试了一个我从早期实验室使用的代码,但它与程序不兼容。我不知道该怎么处理这个空白部分。目前,我的输出只是二进制: 二进制文件之后没有打印内容

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <wiringPi.h>

void numberToBinary(int arr[], int numOfBits, int userNum);
void addOne(int arr[], int numOfBits);
void flipBits(int arr[], int numOfBits);
void printArray(int binaryArr[], int numberOfElements);
void binaryToLED(int binaryArr[], int numOfBits, int pinNumbers[]);

int main(void) {
    if (wiringPiSetup() == -1) {
        puts("Raspberry Pi setup failed. Check the wiringPi library. ");
        return 1;
    }
    int numOfBits;
    printf("How many bits? ");
    scanf("%d", &numOfBits);
    
    int pinNumbers[numOfBits];
    int userPin;
    for (int i = 0; i< numOfBits; i++) {
        printf("Enter the pin number for LED %d: ", i+1);
        scanf("%d", &userPin);
        pinNumbers[i] = userPin;
        pinMode(pinNumbers[i], OUTPUT);
    }
    
    int binaryArr[numOfBits];
    int upperBound = 16;
    int lowerBound = 0;
    int userNum;
    
    printf("\n                                                    \n%38s", "Number to Binary Converter");
    printf("\n                                                    \n%44s", "Enter number between 127 and -128 to be converted to binary. Enter a non-numeric input to end.");
    printf("\n                                                    \n\n");
    
    while(scanf("%d", &userNum) ==1) {
        if((userNum < lowerBound) || userNum > upperBound) {
            printf("%d is out of range. \n", userNum);
            printf("Enter a number within -127, 128 to be respresented.");
            continue;
        }
        
        for (int i = 0; i < numOfBits; i++) {
            binaryArr[i] = 0;
        }
        numberToBinary(binaryArr, numOfBits, abs(userNum));
        if (userNum < 0) {
            flipBits(binaryArr, numOfBits);
            addOne(binaryArr, numOfBits);
        }
        printf("Binary: ");
        printArray(binaryArr, numOfBits);
        puts("");
        
        binaryToLED(binaryArr, numOfBits, pinNumbers);
    }
    return EXIT_SUCCESS;
}
void addOne(int arr[], int numOfBits){
}
void printArray(int binaryArr[], int numberOfElements) {
    int i;
}
void numberToBinary(int binaryArr[], int numOfBits, int userNum) {

}
void flipBits(int binaryArr[], int numOfBits){
    for(int i = 0; i< numOfBits; i++){
        if(binaryArr[i] ==1) {
            binaryArr[i] ++;
        }
    }
    return;
}
void binaryToLED(int binaryArr[], int numOfBits, int pinNumbers[]) {
    for(int i = 0; i < numOfBits; i++) {
        digitalWrite(pinNumbers[i], binaryArr[i]);
    }
    delay(5000);
    for(int i = 0; i < numOfBits; i++) {
        digitalWrite(pinNumbers[i], 0);
    }
    return;
}
将数字转换为二进制数

只需要一个整数

#define ON_TIME 5000
void binaryToLED(unsigned number, int numOfBits), int pinNumbers[]) {
  int i;
  for (i = 0; i<numOfBits; i++) {
    digitalWrite(pinNumbers[i] , number & 1);
    numer >>= 1;
  }
  delay(ON_TIME);
  for (i = 0; i<numOfBits; i++) {
    digitalWrite(pinNumbers[i] , 0);
  }
}

// Pass in address of the integer
void flipBits(unsigned *number, int numOfBits){
  if (numOfBits > 0) {
    unsigned mask = 1u << (numOfBits-1);;
    *number ^= mask;
  }
}

使用void what?@tadman刚刚解决了一个问题,您需要展示如何使用这个函数,特别是使用示例输入和输出。@tadman我刚刚发布了我的全部代码。当然更好。将有助于包含一个让您感到困惑的特定用例,因为如果我们要测试它,有很多方法可以使用它。例如,binaryArr是否应包含一系列值(如1或0)或ASCII字符(如“1”或“0”)?也许sprintf就是答案。也许不是!这样我就可以去掉其他的空隙了@chux@KatieS还需要打印阵列吗`