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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Игорюня
20 / 16 / 7
Регистрация: 07.12.2013
Сообщений: 244
#1

Битовые операции - C++

27.02.2014, 10:29. Просмотров 431. Ответов 12
Метки нет (Все метки)

Битовые операции

Собсно,если используется 4 байтовая переменная,то почему она представлена 16 битами(1010 0110 0010 0110),а не 32 битами?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2014, 10:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Битовые операции (C++):

Битовые операции, битовые поля. - C++
Здравствуйте! Еслть 4 диапазона чисел: 0-100, 0-100, 0-6000, 0-3. Сделать в виде битовых операций. Записать в unsigned int. Использовать...

Битовые операции и операции смещения языка С - C++
Доброго времени суток господа,помогите пожалуйста.Есть 2 кода к задаче,первый работает верно(переводит обычные числа в 16-ти ричные),а...

Битовые операции - C++
помогите написать программу в консоли... я вообще не знаю эту тему и не знаю ка делать... вот, задача.. Создайте программу,...

Битовые операции - C++
Не могу разобраться с 4 заданием Реализовал пятое но не в одну строчку и без понятия как сделать в одну П.5.18.Правил Запрещено...

битовые операции - C++
надо написать ф-цию, которая в данном числе(в двоичной с.с.) на заданном номере ставила 1, вместо 0

Битовые операции - C++
Имеется число int x = 85; // 1010101 - двоичное представление // 6543210 - номера битов // нужно взять // 0,2,3,4 биты и сложить...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
27.02.2014, 10:39 #2
для экономии чернил и места
Игорюня
20 / 16 / 7
Регистрация: 07.12.2013
Сообщений: 244
27.02.2014, 10:54  [ТС] #3
Jupiter, что-то я не понял,как вывести результат операции на консоль.

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std;
 
int main()
{  
 
    1111000011110000 
    | 
    0000000000000001;
 
    system("pause");
}
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
27.02.2014, 11:06 #4
Цитата Сообщение от Игорюня Посмотреть сообщение
что-то я не понял,как вывести результат операции на консоль.
в коде с++ нельзя задать число литерал в двоичном виде
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
27.02.2014, 11:24 #5
Цитата Сообщение от Jupiter Посмотреть сообщение
в коде с++ нельзя задать число литерал в двоичном виде
Вообще-то можно:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
int operator"" b(const char* s)
{
    int ret = 0;
    while(s && *s)  
    {
        ret <<= 1;
        ret |= *s++ == '1' ? 1 : 0;
    }
    return ret;
}
 
int main() {
    
    std::cout << 0110b << std::endl; 
    
    return 0;
}
SatanaXIII
Супер-модератор
Эксперт С++
5609 / 2643 / 244
Регистрация: 01.11.2011
Сообщений: 6,502
Завершенные тесты: 1
27.02.2014, 11:54 #6
Цитата Сообщение от Tulosba Посмотреть сообщение
Вообще-то можно
А что у вас за среда, я постесняюсь спросить?
Моя не позволяет перегружать все подряд.
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
27.02.2014, 11:58 #7
Цитата Сообщение от SatanaXIII Посмотреть сообщение
А что у вас за среда, я постесняюсь спросить?
C++11. Проверить можно на ideone.com например.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
27.02.2014, 12:49 #8
Цитата Сообщение от Tulosba Посмотреть сообщение
Вообще-то можно:
говоря "в коде на С++" я имею ввиду поддержку на уровне компилятора
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
27.02.2014, 12:52 #9
Jupiter, так это и есть поддержка на уровне компилятора, поддержка пользовательских литералов. Другое дело, что встроенного литерала нет
gray_fox
27.02.2014, 13:00
  #10

Не по теме:

Цитата Сообщение от Tulosba Посмотреть сообщение
Вообще-то можно:
Ну вот, пользовательский литерал, не начинающийся с _ )

Tulosba
27.02.2014, 13:08
  #11

Не по теме:

Цитата Сообщение от gray_fox Посмотреть сообщение
Ну вот, пользовательский литерал, не начинающийся с _ )
Знаю. Ворнинги пишет. Посмотрим, сделают ли в C++14 ошибкой

ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
27.02.2014, 13:09 #12
Цитата Сообщение от Игорюня Посмотреть сообщение
Jupiter, что-то я не понял,как вывести результат операции на консоль.
ну если не брать перегрузку, ту что привел Tulosba,
то переводи из двоичного в десятичный/шестнадцатеричный обрабатывай и обратно
например как из строки получить число
C++
1
2
3
4
5
6
7
8
9
 int IntToBin(char* str)
{
int res=0;
for( i=0;str[i]!='\0';i++)
{
  res*=2;
  res+=str[i]-'0'; 
 }
}
но функция не проверяет на допустимость символов
DrOffset
7089 / 4230 / 950
Регистрация: 30.01.2014
Сообщений: 7,006
27.02.2014, 13:52 #13
Tulosba, если позволите, вот версия без рантайм циклов:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
template <char first, char... bits>
struct bin_conv
{
    enum
    {
        value = bin_conv<first>::value * (1 << sizeof...(bits)) + bin_conv<bits...>::value
    };
};
template <char first>
struct bin_conv<first>
{
    static_assert(first == '0' || first == '1', "not a binary number");
    enum
    {
        value = first - '0'
    };
};
 
template <char... digits>
constexpr int operator "" b()
{
    return bin_conv<digits...>::value;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.02.2014, 13:52
Привет! Вот еще темы с ответами:

Битовые операции - C++
Ребят, нужен алгоритм, а желательно и код для реализации следующей функции: Есть скажем числа от 0 до 7, т.е. 8 (2^3) Теперь...

Битовые операции - C++
Ребят, помогите кто чем может. Дана строка unsigned char. Необходимо через каждых 4 бита вставить 1, при этом ничего не затерев. ...

Битовые операции - C++
Вот такая вот лаба на С, уже как не думал ну не могу решить я ее. Прошу помочь, прикрепил полное задание с примером работы(в примере...

Битовые операции - C++
Здравствуйте! нужно решить задачу: в целом числе заменить младший бит старшего байта на 1 решается ли это битовыми сдвигами? и...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
27.02.2014, 13:52
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru