如何获取字符或数字的位值

时间:2014-10-22 14:50:32

标签: c binary bit-manipulation

我想知道字符中的位值或说二进制值。 例如 对于二进制值是01100001我想将每个'0'和'1'存储在一个数组中!请告诉我如何按位访问它。

2 个答案:

答案 0 :(得分:1)

例如

#define N  8

//...

char c = '\x61';
int b[N] = { 0 };
size_t  i = N;

for ( unsigned char ch = c; ch; ch >>= 1 )
{
    b[--i] = ch & 1;
}

答案 1 :(得分:0)

基于@Vlad来自莫斯科的回答以及OP最新要求找到平均比特值

#include <stdio.h>

int main()
{
    unsigned char ch, c = '\x61';
    double tot = 0;

    for (ch = c; ch; ch >>= 1)
        tot += (ch & 1);
    printf ("Average bit value is %f\n", tot / 8);
    return 0;
}