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

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

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

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

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

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

заранее огромное спасибо!
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.11.2013, 01:04
Ответы с готовыми решениями:

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

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

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

Битовые операции
Добрый день! Помогите пожалуйста написать программу. Дано короткое целое неотрицательное...

6
Форумчанин
Эксперт CЭксперт С++
8190 / 5040 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
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
3174 / 1933 / 313
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
05.11.2013, 06:02 3
Цитата Сообщение от mishkazzz Посмотреть сообщение
заменить младший бит старшего байта на 1
Для 32-битного числа (4 байта):

C++
1
x |= 0x1000;
Добавлено через 12 минут
Цитата Сообщение от gazlan Посмотреть сообщение
Для 32-битного
Fix: для 32-битного нулей должно быть вдвое больше :-)
1
0 / 0 / 1
Регистрация: 05.11.2013
Сообщений: 34
05.11.2013, 09:42  [ТС] 4
Спасибо огромное за помощь!
0
Форумчанин
Эксперт CЭксперт С++
8190 / 5040 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
05.11.2013, 14:41 5
Цитата Сообщение от gazlan Посмотреть сообщение
Для 32-битного числа (4 байта):
по стандарту ничего не гарантирует, что int будет занимать 4 байта, более того, это зависит от архитектуры ОС.
0
Эксперт С++
4978 / 3085 / 456
Регистрация: 10.11.2010
Сообщений: 11,164
Записей в блоге: 10
05.11.2013, 14:49 6
Универсальный метод:
C++
1
    i |= 1 << (sizeof( i ) - 1) * 8;
2
Форумчанин
Эксперт CЭксперт С++
8190 / 5040 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
05.11.2013, 15:31 7
Цитата Сообщение от MrGluck Посмотреть сообщение
bs.set(7, 1);
C++
1
bs.set(len-8, 1);
</self-fixed>
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.11.2013, 15:31
Помогаю со студенческими работами здесь

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

Битовые операции
Доброго времени суток! Помогите решить задачу на тему &quot;Битовые операции&quot;: Ввести четыре целых...

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

Битовые операции
Народ дайте ссылку пожалуйста на задачи по сишке где нужно использовать битовые операции!...


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

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

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