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

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

Войти
Регистрация
Восстановить пароль
 
mishkazzz
0 / 0 / 0
Регистрация: 05.11.2013
Сообщений: 34
#1

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

05.11.2013, 01:04. Просмотров 410. Ответов 6
Метки нет (Все метки)

Здравствуйте!

нужно решить задачу: в целом числе заменить младший бит старшего байта на 1

решается ли это битовыми сдвигами? и если да, можно ли получить хотя бы идею, как это делать (пользоваться ли signed и unsigned, например?)

заранее огромное спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2013, 01:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Битовые операции (C++):

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

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

битовые операции - C++
как из 0001 0000 тоесть в dec '8' сделать 0000 0001 в dec '1'?

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

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

Битовые операции - C++
Народ дайте ссылку пожалуйста на задачи по сишке где нужно использовать битовые операции! Желательно с решениями!

6
MrGluck
Модератор
Эксперт CЭксперт С++
7279 / 4440 / 650
Регистрация: 29.11.2010
Сообщений: 12,022
05.11.2013, 01:35 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
 
template <typename T>
std::string foo(T value)
{
    int len = sizeof(value) * 8; // узнаем число битов
    unsigned mask = 1 << (len-1);
    std::string result;
    for (int i=0; i < len; i++, value <<= 1)
        result += ((value & mask || i == 7) ? '1' : '0');
    return result;
}
 
 
int main()
{
    std::cout << foo(45);
}
Добавлено через 7 минут
Через bitset:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <bitset>
 
template <typename T>
unsigned long foo(T value)
{
    const int len = sizeof(value) * 8; // узнаем число битов
    std::bitset<len> bs(value);
    bs.set(7, 1);
    return bs.to_ulong();
}
 
 
int main()
{
    std::cout << foo(45);
}
0
gazlan
3132 / 1908 / 285
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
05.11.2013, 06:02 #3
Цитата Сообщение от mishkazzz Посмотреть сообщение
заменить младший бит старшего байта на 1
Для 32-битного числа (4 байта):

C++
1
x |= 0x1000;
Добавлено через 12 минут
Цитата Сообщение от gazlan Посмотреть сообщение
Для 32-битного
Fix: для 32-битного нулей должно быть вдвое больше :-)
1
mishkazzz
0 / 0 / 0
Регистрация: 05.11.2013
Сообщений: 34
05.11.2013, 09:42  [ТС] #4
Спасибо огромное за помощь!
0
MrGluck
Модератор
Эксперт CЭксперт С++
7279 / 4440 / 650
Регистрация: 29.11.2010
Сообщений: 12,022
05.11.2013, 14:41 #5
Цитата Сообщение от gazlan Посмотреть сообщение
Для 32-битного числа (4 байта):
по стандарту ничего не гарантирует, что int будет занимать 4 байта, более того, это зависит от архитектуры ОС.
0
castaway
Эксперт С++
4884 / 3019 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
05.11.2013, 14:49 #6
Универсальный метод:
C++
1
    i |= 1 << (sizeof( i ) - 1) * 8;
2
MrGluck
Модератор
Эксперт CЭксперт С++
7279 / 4440 / 650
Регистрация: 29.11.2010
Сообщений: 12,022
05.11.2013, 15:31 #7
Цитата Сообщение от MrGluck Посмотреть сообщение
bs.set(7, 1);
C++
1
bs.set(len-8, 1);
</self-fixed>
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.11.2013, 15:31
Привет! Вот еще темы с ответами:

Битовые операции - C++
Напишите программу в которой обьявите короткое целое со значением 12345 и определите путем выполнения битовых операций С++ установлены...

Битовые операции - C++
Здраствуйте, помогите, пожалуйста! Надо написать три функции, используя только битовые (для первых двух) и только битовые и...

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

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


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

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

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