Заставка

Программирование на старых и современных языках, а так-же дизайн

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



Работа с битами на Си/Си++

Сообщений 1 страница 2 из 2

1

Информацию взял отсюда - https://volstr.ru/?p=36

Вот готовый пример работы с битами main.cpp:

Код:
#include <iostream>
using namespace std;

void write_bit(unsigned int *variable, int bit, unsigned int val) {
  unsigned int temp;
  if(val == 0)
    temp &= ~(1 << bit);
  else
    temp |= (1 << bit);

  *variable = temp;
}

void invert_bit(unsigned int *variable, int bit) {
  unsigned int temp;
  temp ^= (1 << bit);
  *variable = temp;
}

int read_bit(unsigned int variable, int bit) {
  bool b;
  b = (bool((1 << bit) & variable));
  if(b == true) return 1;
  
  return 0;
}

int main(int argc, char** argv) {
  unsigned int num=0;
  for(int i=0; i<8; i++) write_bit(&num, i, 1);
  cout << num << endl;

  for(int i=0; i<8; i++) cout << read_bit(num, i);
  cout << endl;
  return 0;
}

Результат:

Код:
255
11111111

--------------------------------
Process exited after 0.06387 seconds with return value 0
Drücken Sie eine beliebige Taste . . .

0

2

Если написать так:

Код:
cout << num << endl;
for(int i=0; i<4; i++) write_bit(&num, i, 1);

То результат будет таким:

Код:
15
11110000

--------------------------------
Process exited after 0.1877 seconds with return value 0
Drücken Sie eine beliebige Taste . . .

0