C:获取整数位

时间:2019-03-08 16:00:33

标签: c binary integer

我有一个程序,它将两个4个字节的整数作为输入,我需要像这样将它们存储到整数数组中...

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main (int argc, char *argv[]) {
    int vals1[32], vals2[32];
    int num1 = atoi(argv[1]);
    int num2 = atoi(argv[2]);

    // so argv[1] might be 47 and I would want to set the values of the vals1 array to reflect that in binary form
}

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

第一个任务是将char *转换为int,您说过可以。接下来是下一部分,即获取二进制表示形式。为了获取任何数据类型的二进制表示形式,使用 Shift Operator 是最好的方法之一。而且,您可以通过对数据类型进行移位然后执行按位与(即&1)来获得它。例如,如果n是整数

int n = 47;
for (int i = 0; i < 32; i++)
{
   /* It's going to print the values of bits starting from least significant. */
   printf("Bit%d = %d\r\n", i, (unsigned int)((n >> i) & 1));
}

因此,使用shift运算符,解决问题的方法类似于

void fun(int n1, int n2)
{
    int i, argv1[32], argv2[32];

    for (i = 0; i < 32; i++)
    {
        argv1[i] = ((unsigned int)n1 >> i) & 1;
        argv2[i] = ((unsigned int)n2 >> i) & 1;
    }
}

您必须注意位顺序,即哪个位存储在数组索引的哪个位置。