2014-10-22 2 views
-3

Я хочу знать значения бит или указывать двоичные значения в символе. например для двоичного значения 01100001 Я хочу хранить каждый '0' и '1' в массиве! PLZ сказать мне, как получить доступ к нему поразрядным.Как получить значения бит символа или цифры

+0

Сохранение биты что-то в массиве, как правило, является признаком плохой план. Не всегда, но обычно. Для чего вы планируете использовать это? – harold

+3

Вы можете получить бит * ничего *, используя побитовый сдвиг и побитовые операции и операторы. Однако сначала вы можете [прочитать о проблеме XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) и сообщить нам, почему * вы хотите сделать Это. –

+0

Вы можете перебирать длину (sizeof (char)) символа при перемещении и сохранении результатов в массиве –

ответ

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; 
} 
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; 
} 
+0

Большое спасибо! Это то, что я искал все время. Оценил. –

Смежные вопросы