你能用C中的二进制数索引一个数组吗?

时间:2016-11-14 02:46:27

标签: c

我想知道是否可以使用二进制数而不是十进制数来索引数组。例如,arr [二进制]。

2 个答案:

答案 0 :(得分:2)

是的,这绝对是可能的。只需在您的二进制数前加0b

int array[] = {1,2,4,6};
printf("%d\n", array[0b0001]); // prints 2
来自https://gcc.gnu.org/onlinedocs/gcc/Binary-constants.html二进制常量的

可以使用0b语法

编写

答案 1 :(得分:2)

正如所指出的,存储在计算机上的所有数字都是二进制的。二进制是唯一可以存储在计算机上的东西。

而且,C不支持二进制语法。 (或者也许是C编译器吗?)

然而,你可以像这样转换二进制字符串:

var value = arr[BinaryToInt("1011")];

int BinaryToInt(string s)
{
    int value = 0;
    int bitValue = 1;

    for (int i = s.Length - 1; i >= 0; i--)
    {
        if (s[i] == '1')
            value += bitValue;

        bitValue <<= 1;
    }
    return value;
}