98 / 1 / 0
Регистрация: 06.10.2016
Сообщений: 5
1

Как получить биты переменной?

06.10.2016, 09:57. Показов 10846. Ответов 11

Author24 — интернет-сервис помощи студентам
Есть ли какие-то встроенные средства, с помощью которых можно определить какие биты содержит в себе переменная? Потому что cout выводит уже преобразованные биты, а мне хотелось бы получить результат именно до преобразования.

Например, int 12578329 состоит из битов 0x00BFEE19(если размер int равен 4 байтам).

Как можно узнать эти самые биты? Знаю, что можно узнать сколько байт содержит в себе переменная с помощью оператора sizeof. Имеется ли оператор для моего случая?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.10.2016, 09:57
Ответы с готовыми решениями:

Разделить старшие и младшие биты в переменной
Объясните дураку работу с битовыми операциями... Есть у меня массив, где первый элемент это 32...

Написать функцию, меняющую в переменной типа char местами биты с номерами n и n+1
Написать функцию, меняющую в переменной типа char местами биты с номерами n и n+1 n вводится с...

Ввести целое число A. Инвертировать все биты с 4 по 8, включая эти биты. Вывести результат
нужна помощь в битовых операциях.Ввести целое число A. Инвертировать все биты с 4 по 8, включая...

Побитовые операции. Получить целое число, отбросив нечётные биты данного числа k
Разработать алгоритм и составить программы на языке Си для решения задачи. Bo всех случаях, где...

11
Helper C/C++
286 / 163 / 122
Регистрация: 22.09.2016
Сообщений: 518
06.10.2016, 10:12 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
using namespace std;
 
int main()
{
    int n = 123456789;
 
    std::cout << n << " => ";
 
    for (int d = 31; d >= 0; d--)
        std::cout << (((1 << d) & n) ? '1' : '0');
 
    std::cout << endl;
 
    std::cin.get();
}
Миниатюры
Как получить биты переменной?  
0
98 / 1 / 0
Регистрация: 06.10.2016
Сообщений: 5
06.10.2016, 10:30  [ТС] 3
Invader0x7F, А внутренними средствами это как-то возможно сделать, без написания своих велосипедов? Может в STL есть что-то?
0
Helper C/C++
286 / 163 / 122
Регистрация: 22.09.2016
Сообщений: 518
06.10.2016, 10:33 4
Вот, написал:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <bitset>
#include <iostream>
 
using namespace std;
 
int main()
{
    int n = 123456789;
 
    std::bitset<32> bs = n;
    std::cout << n << " => " << bs.to_string() << endl;
 
    std::cin.get();
}
1
98 / 1 / 0
Регистрация: 06.10.2016
Сообщений: 5
06.10.2016, 10:37  [ТС] 5
Ясно, спасибо. Щас буду разбирать что тут написано.

А зачем включать пространство имен std, если используется абсолютная адресация(или как это правильно сказать)?
0
Helper C/C++
286 / 163 / 122
Регистрация: 22.09.2016
Сообщений: 518
06.10.2016, 10:38 6
1. std:: - для красоты кода; 2. Адресация здесь не причем. std:: - пространство имен (namespace).
0
98 / 1 / 0
Регистрация: 06.10.2016
Сообщений: 5
06.10.2016, 10:42  [ТС] 7
1. std:: - для красоты кода;
Это смешно, спасибо Для красоты еще
Код
return 0
можно добавить.
0
Helper C/C++
286 / 163 / 122
Регистрация: 22.09.2016
Сообщений: 518
06.10.2016, 10:46 8
Цитата Сообщение от sajufacey Посмотреть сообщение
Это смешно, спасибо Для красоты еще return 0 можно добавить.
Это НЕ смешно. Если вам не нужен std::то просто не пишите его или сотрите.
Просто без std:: получаются "оборванные" имена (идентификаторы).
Но все это лично мое мнение. Посмотрите готовые примеры кода с использованием STL,
во многих из них вы увидите использование std::.
0
obivan
06.10.2016, 10:47
  #9

Не по теме:

sajufacey, а можно

C++
1
return EXIT_SUCCESS;

0
98 / 1 / 0
Регистрация: 06.10.2016
Сообщений: 5
06.10.2016, 11:07  [ТС] 10
Я про то, что нет смысла вставлять using namespace std; и использовать ::.

Добавлено через 6 минут
obivan, спасибо, хороший совет.
1
Модератор
Эксперт CЭксперт С++
5286 / 2373 / 342
Регистрация: 20.02.2013
Сообщений: 5,770
Записей в блоге: 20
06.10.2016, 11:14 11
Цитата Сообщение от sajufacey Посмотреть сообщение
абсолютная адресация(или как это правильно сказать)?
sajufacey, квалификатор std с операцией разрешения контекста. Такие имена, ЕМНИП, ещё называют уточнёнными именами.

Цитата Сообщение от Invader0x7F Посмотреть сообщение
Просто без std:: получаются "оборванные" имена (идентификаторы).
Но все это лично мое мнение. Посмотрите готовые примеры кода с использованием STL,
во многих из них вы увидите использование std::.
Invader0x7F, использовать и то, и другое просто излишне. Избыточно. Обычная практика - выбрать что-то одно.
0
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
06.10.2016, 11:43 12
Лучший ответ Сообщение было отмечено sajufacey как решение

Решение

http://rextester.com/QAZMP80959
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <bitset>
//////////////////////////////////////////////////////////////////
int main()
{
    int n{ 12578329 };
    std::cout << std::oct << n << std::endl;
    std::cout << std::hex << n << std::endl;
    std::cout << std::dec << n << std::endl;
    std::cout << std::bitset<32>( n ).to_string() << std::endl;
}
Код
57767031
bfee19
12578329
00000000101111111110111000011001
1
06.10.2016, 11:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.10.2016, 11:43
Помогаю со студенческими работами здесь

Получить доступ к переменной класса при наличии такого же имени переменной в функции
Например, есть приватная переменная clientName в классе. Также есть точно такая же переменная в...

... В четных байтах числа в двоичной системе переместить нулевые биты в старшие биты, а в нечетных байтах – в младшие ...
Доброго времени суток всем, столкнулся с проблемой по С++,требуется написать программу: которая...

Как программно получить заначение типа переменной.
Как программно получить заначение типа переменной, int ? float ? и тд?

Как получить значение переменной из другого cpp ?
Здравствуйте, Подскажите пожалуйста, как из main`а, получить доступ к значению значения в другом...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru