Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

Собсно,если используется 4 байтовая переменная,то почему она представлена 16 битами(1010 0110 0010 0110),а не 32 битами?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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++
Доброго времени суток! Есть задача: Даны два целых без знаковых числа. Остатки от деления их на 16 заносятся соответственно в 4 младших и...

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

Битовые операции - C++
Помогите, пожалуйста, написать код на C++! Дана последовательность из 8 байт: unsigned char n =...

Битовые операции - C++
Приветствую! Изучаю C++, не могу освоить битовые операции (перемещение, исключающие или, инвертирование всякое). Просто не понимаю...

12
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
27.02.2014, 10:39 #2
для экономии чернил и места
1
Игорюня
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");
}
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
27.02.2014, 11:06 #4
Цитата Сообщение от Игорюня Посмотреть сообщение
что-то я не понял,как вывести результат операции на консоль.
в коде с++ нельзя задать число литерал в двоичном виде
1
Tulosba
:)
Эксперт С++
4397 / 3233 / 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;
}
0
SatanaXIII
Супер-модератор
Эксперт С++
5619 / 2654 / 247
Регистрация: 01.11.2011
Сообщений: 6,554
Завершенные тесты: 1
27.02.2014, 11:54 #6
Цитата Сообщение от Tulosba Посмотреть сообщение
Вообще-то можно
А что у вас за среда, я постесняюсь спросить?
Моя не позволяет перегружать все подряд.
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
27.02.2014, 11:58 #7
Цитата Сообщение от SatanaXIII Посмотреть сообщение
А что у вас за среда, я постесняюсь спросить?
C++11. Проверить можно на ideone.com например.
1
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
27.02.2014, 12:49 #8
Цитата Сообщение от Tulosba Посмотреть сообщение
Вообще-то можно:
говоря "в коде на С++" я имею ввиду поддержку на уровне компилятора
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
27.02.2014, 12:52 #9
Jupiter, так это и есть поддержка на уровне компилятора, поддержка пользовательских литералов. Другое дело, что встроенного литерала нет
0
gray_fox
27.02.2014, 13:00
  #10

Не по теме:

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

0
Tulosba
27.02.2014, 13:08
  #11

Не по теме:

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

0
ValeryS
Модератор
6709 / 5118 / 482
Регистрация: 14.02.2011
Сообщений: 17,213
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'; 
 }
}
но функция не проверяет на допустимость символов
0
DrOffset
7376 / 4453 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
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;
}
1
27.02.2014, 13:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.02.2014, 13:52
Привет! Вот еще темы с ответами:

Битовые операции - C++
#include&lt;iostream&gt; #include&lt;climits&gt; int main() { unsigned int a = UINT_MAX; unsigned short b = USHRT_MAX; std::cout &lt;&lt;...

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

Битовые операции - C++
Доброго времени суток . Вот такая вот задачка : в числе А установить в единицу n битов влево от позиции p, заменить ими m битов числа В,...

Битовые операции - C++
Задача. Я не понимаю что тут делать. Кто то что то понимает? Элементарное я понимаю сдвиги и прочее но это вообще:wall: Умоляю,...


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

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

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