2012-06-10 5 views
0

У меня есть символ [16] массива и я получаю ввод от пользователя: Вход для ПРИМЕР- 15, 21, 23, -1С, как замаскировать биты в массив символов

мне нужно установить значение бит до '1' для места 15,21 и 23. -1 завершит программу.

Каждый массив char [16] представляет значения от 0 до 127, представляющие биты. У меня проблема с вводом '1' в 15,21 и 23 ячейки.

Вот моя программа

int temp; 
char A[16]; 
/*Sets all the cells values to o*/ 
memset(A, 0, 16*sizeof(char)); 
While (int != -1) 
{ 
    scanf("Enter values from the user:%d", val"); 
    div = (temp/8); 
    mod = (temp%8); 
    A[div] |= (mod<<=1); 
} 

Проблема, что это не установка ячейки 15,21 и 23 значения в «1».

+7

'<< =' не то же самое, что '<<'. –

+3

Кроме того, вы не разместили свой фактический код. Отправьте свой фактический код. –

+0

Устанавливает ли какая-либо другая ячейка в 1? Или он вообще ничего не может установить? – anatolyg

ответ

2

Используйте это, чтобы установить правильный бит:

A[div] |= (1<<mod); 

Связанные вопрос: How do you set, clear, and toggle a single bit?

Полный пример кода:

#include <iostream> 

int main() { 
    unsigned char A[16]; 
    memset(A, 0, sizeof(A)); 
    int t; 
    std::cin >> t; 
    while (t != -1) 
    { 
     int div = (t/8); 
     int mod = (t%8); 
     A[div] |= (1<<mod); 
     std::cin >> t; 
    } 
    for(int i = 0; i < 16; ++i) { 
     std::cout << (int)A[i] << " "; 
    } 
    std::cout << std::endl; 
    return 0; 
} 
+0

A [div] | = (1 << mod); возвращает значение 16 – judith

+0

И какое значение он должен вернуть? –

+0

Я пытаюсь установить бит в 1 – judith

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

  • Нет связанных вопросов^_^