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

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

Войти
Регистрация
Восстановить пароль
 
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
#1

деление битов по полам - C++

12.01.2014, 15:34. Просмотров 214. Ответов 3
Метки нет (Все метки)

Доброго времени суток. Имеется такой вопрос: как поделить инт на два инта так, чтобы в каждом из дочерних было по половине битов из начального инта, меньше, чем за 3 сдвига?
Мой алгоритм такой:
C++
1
2
3
4
int a = 15161;
int first_part, second_part;
first_part = (a >> 16);
second_part = ((a<<16)>>16);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.01.2014, 15:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос деление битов по полам (C++):

Перевод таблицы битов и времени в последовательность битов arduino - C++
доброго времени суток в приведенной ниже таблице левый столбец - биты, правый - их длительность. известно, что единичный сигнал длится от...

Операции с побитовыми операторами (число 8 битов и число 9 битов) - C++
Доброго времени суток всем ! Прошу ответа на несложный вопрос (...по крайней мере мне так кажется...) Есть функция: ...

Задача про деление яблок (целочисленное деление) - C++
Ребят,помогите с задачкой,как написать input.txt и output.txt? Помогите решить задачу. C++. Заранее спасибо! N школьников делят K яблок...

Сброс битов - C++
Вот такое условие. &quot;Если в числе x установлен бит n и установлен бит m, то в числе y сбросить биты 3 и самый старший бит.&quot; Логически...

Перенос битов - C++
Ввести число, перенести все еденичные биты в середину разрядной сетки.

Замена битов - C++
Помогите решить задачу, пожалуйста. Ввести последовательность из 8 символов. Если символ есть + - * / %, то заменить в нём четыре младших...

3
zss
Модератор
Эксперт С++
6629 / 6191 / 2048
Регистрация: 18.12.2011
Сообщений: 16,146
Завершенные тесты: 1
12.01.2014, 15:51 #2
C++
1
2
3
4
5
int first_part, second_part;
int size=sizeof(int);
first_part = a >> (size/2);
unsigned int mask2 = (-1)>>(size/2);
second_part = a & mask2;
2 сдвига.
1
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
12.01.2014, 16:38  [ТС] #3
zss, Это будет быстрее,чем 3 сдвига?
0
zss
Модератор
Эксперт С++
6629 / 6191 / 2048
Регистрация: 18.12.2011
Сообщений: 16,146
Завершенные тесты: 1
12.01.2014, 20:20 #4
Цитата Сообщение от metaluga145 Посмотреть сообщение
Это будет быстрее,чем 3 сдвига?
Не уверен.
Думаю примерно столько же (2 сдвига и одно побитовое "И").
0
12.01.2014, 20:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.01.2014, 20:20
Привет! Вот еще темы с ответами:

Копирование битов - C++
Задача: Вот ее решение: int copy_bits( int A, int B, int startBit, int stopBit) //Post 999 { /* Биты считаем с нулевого,...

Подсчет битов - C++
На входе даны 2 последовательности по 8 бит IN_0, IN_1. OUT_0 изначально равен 0. Если в IN_0 встречаются 2 единицы, идущие...

Установка битов - C++
Установка битов Для этого надо сложить операцией «ИЛИ» x с маской, у которой единицы в соответствующих позициях. Например, чтобы...

Вычленение битов - C++
Здраствуйте, такая проблема, я получаю из LPT порта данные в обычном децимальном измерении, как мне это число перевести в бинарное?...


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

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

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