@kyklaed

В чем смысл работы побитово с десятичными цислами?

Привет, объясните пожалуйста в чем суть и как понять работы побитово с десятичными числами ?
есть программа , она должна брать определенное количество битов с определенного места
для примера с двоичным числом. если я правильно понимаю.
x= 10101111
p=2
n=2

1)x>>(p+1-n)
x>> 1 = 01010111

2)~(~0 сдвиг влево n)
~0 = 11111111
11111111<<2 = 11111100
~11111100=00000011

3)01010111 И(побитовое) 00000011 = 00000011

ответ 00000011

#include <stdio.h>
#include  <conio.h>

unsigned getbits(unsigned x, int p, int n){
 return (x >> (p+1-n)) & ~(~0 << n);
}

void main(){
 printf("%d",getbits(1010,2,3));
 getch();
}
  • Вопрос задан
  • 78 просмотров
Решения вопроса 1
@res2001
Developer, ex-admin
Используют доступ к битам, обычно, для хранения и проверки некоторого набора флагов. Т.е. каждый бит некоторой переменной является флагом, если бит равен 1 - флаг выставлен, если 0 - сброшен.
Результат функции getbits можно интерпретировать как логический признак - выставлен определенный флаг или нет. В этом случае вызов getbits можно спрятать за макросами, которые будут подставлять соответствующие параметры в getbits в зависимости от того какой флаг проверяется.
То же самое можно решить и структурой с битовыми полями, в этом случае компилятор возьмет на себя всю работу с битами. Результат при этом будет примерно тем же, что и в случае ручного манипулирования битами.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы