Форум программистов, компьютерный форум CyberForum.ru

Работа с битами. Чтение переменной по битам - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Создать класс String http://www.cyberforum.ru/cpp-beginners/thread1306538.html
Есть такое задание. //Создать консольное приложение, содержащее реализацию и практическое применение класса Строка. Данный класс должен быть основан на динамическом расширяемом массиве символов. Функциональность класса: //1. Инициализация строки. //2. Изменение строки. //3. Возвращение строки. //4. Получение длинны строки. //5. Добавление строки к существующей. //6. Вставка символа в...
C++ Довести длину строки до заданной, вставляя пробелы между словами Довести длинну строки до заданной вставляя пробелы меду словами . Напечатать все слова которые совпадают с ее первым словом. Пожалуйста Добавлено через 18 часов 0 минут Людиии http://www.cyberforum.ru/cpp-beginners/thread1306523.html
Определять минимальную сумму между двумя соседними элементами массива C++
Задание: Напишите программу, которая позволяет вводить динамический одно-мерный целочисленный массив и посредством вызова функции определять минимальную сумму между двумя соседними элементами массива. При передаче массива в функцию используйте указатели, а размерность передавайте по ссылке. Применение глобальных переменных категорически запрещено.
C++ Объясните работу указателей
Не могу въехать в тему указателей в с++.Как я понял указатель это та же переменная только значением является адрес. Дали в универе код, сижу над ним, никак не могу вникнуть. #include <iostream> using namespace std; int main() { int *q, n, *p; // здесь вроде как объявляем 2 указателя и переменную n = 100; p = &n; // &-используется для определения адреса по имени, т.е. приравниваем...
C++ Переставить значения заданного одномерного массива http://www.cyberforum.ru/cpp-beginners/thread1306515.html
Помогите, пожалуйста, справиться с задачей! Нужно переставить значения заданного одномерного массива так, чтобы все нулевые значения оказались в конце массива, а ненулевые в начале. не нарушая порядок, в котором они следовали в исходном массиве.
C++ Написать функцию вычисления корней квадратного уравнения Напишите функцию вычисления корней квадратного уравнения. Про-грамма должна принимать от пользователя коэффициенты, вызывать функцию, а затем выводить полученный результат. Параметрами функ-ции должны быть коэффициенты и корни уравнения. Такие аргументы как корни уравнения необходимо передавать по ссылке. Значение, воз-вращаемое функцией, должно передавать в вызывающую программу ин-формацию о... подробнее

Показать сообщение отдельно
lenston
2 / 0 / 1
Регистрация: 12.11.2014
Сообщений: 33

Работа с битами. Чтение переменной по битам - C++

21.11.2014, 00:35. Просмотров 549. Ответов 3
Метки (Все метки)

Всем привет.. задача такая:

Есть некое число, находящееся в переменной X в шестнадцатеричной системе счисления..
Необходимо в несколько переменных передать значения каких-то бит этой X

Например..

У нас есть некое число
C
1
unsigned int x=0xF3;
равное в двоичном представлении 11110011

нам необходимо сначала в переменную "a" отправить самый крайний левый бит - это 1
я делаю вот так
C
1
a=x>>7;
после сохранить значения в переменную "b" 3 бита следующие за певрым
я делаю так
C
1
2
x<<=1;  //после этой операции Х = 11100110
b=x>>5;  //равен не 111=7, а равен 15, т.е первый бит остался и получилось ,что в б передалось 1111, что =15
дальше по аналогии нужно снова 1 и 3 бита последовательно.. вот вывод консоли

11110011
1
11100110
15
00110000
30
01100000
243

вот весь код
C
1
void    _dv(int n) // для вывода измененного х
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
void    _dv(int n){                                     // вывод байта в двоичку
    int i=7;char buffer[]="00000000";
    do {int x=n%2;n=n/2; char z;
            if( x<10 )  z='0'+x;
            else        z='A'-10+x;
        buffer[i]=z; i--;
    } while (n>0); printf("%s",buffer);
}
int main(){ 
    unsigned int x=0xF3;
    _dv(x); printf("\n");
    int a,b,c,d;
    a=x>>7;x<<=1;printf(" %i\n",a);_dv(x); printf("\n");        
    b=x>>5;x<<=3;printf(" %i\n",b);_dv(x); printf("\n");
    c=x>>7;x<<=1;printf(" %i\n",c);_dv(x); printf("\n");
    d=x>>5;x<<=3;printf(" %i\n",d);_dv(x); printf("\n");        
}
не могу понять в чем проблема..
должно получаться следующее..
C
1
2
3
4
5
x=0xF3 11110011
a=1    1
b=7     111
c=0        0
d=3         011
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru