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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.79
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
#1

Копирование бита - C++

26.06.2012, 06:13. Просмотров 1887. Ответов 23
Метки нет (Все метки)

Надо упростить и оптимизировать строку
C++
1
*p=((*p&0x80)>>8)|(*p&0x80);
. Задача - скопировать (не переместить) старший бит байта в младший бит того же байта.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.06.2012, 06:13     Копирование бита
Посмотрите здесь:

Установка бита - C++
Дано целое число A и целое число k. Выведите число, которое получается из числа A установкой значения k-го бита равному 1.

Обработка бита - C++
На входе даны два 8-х разарядных числа IN_0, IN_1. Если на пятом месте в IN_0 стоит 0, то поменять знак числа IN_1,(и вывести...

Проверка бита - C++
Всем привет. Хотел спросить знающих людей, как можно проверить бит в байте. То есть, допустим, есть unsigned char "01010101". Какими...

Обработка бита - C++
Название Размерность Тип N 16 вход M 4 вх P ...

Замена бита единицей - C++
Как реализовать данное условие? Ввести последовательность из 8 целых чисел. В каждом втором числе заменить ( i-1)-й бит единицей, где...

Наличие бита в байте - C++
Подскажите, правильна ли реализация проверки наличия бита в байте #define MARK 0x02 .. if (dataRead & MARK) { ...

Замена бита единицей - C++
Здравствуйте, помогите пожалуйста решить задачку. Нужно: ввести последовательность из 8 целых чисел. В каждом втором числе заменить (...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
26.06.2012, 18:23     Копирование бита #21
Цитата Сообщение от taras atavin Посмотреть сообщение
то ли действительно сделать ифом
Вариант без условных переходов (обычно) будет эффективнее, даже при большем количестве операций.
Evg
Эксперт CАвтор FAQ
17533 / 5771 / 369
Регистрация: 30.03.2009
Сообщений: 15,872
Записей в блоге: 26
26.06.2012, 18:28     Копирование бита #22
Цитата Сообщение от Deviaphan Посмотреть сообщение
Вариант без условных переходов (обычно) будет эффективнее, даже при большем количестве операций.
Стопудово. Условный переход - это очень плохая операция для процессоров с длинным конвейером и аппаратными механизмами предсказания перехода
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
26.06.2012, 18:33  [ТС]     Копирование бита #23
, то, что операции с битами сами по себе медленнее из-за невозможности битовой адресации, я и так понимаю интуитивно. Но ты забываешь, что задача сопоставления стоит в рамках фиксированного формата данных, в котором флаги однозначно битовые. Так вот, исходя из того, что операции в любом случае будут битовыми, как их сделать быстрее? Это всё таки не настолько ответственное место, чтоб из-за двух бит раздувать данные до двух байта, а то и слов, к тому же чем больше места занимает массив, тем обычно тоже медленнее. Но всё таки и тормоза на пустом месте мне нафиг не нужны.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.06.2012, 19:35     Копирование бита
Еще ссылки по теме:

Проверка бита на единицу - C++
Подскажите, корректно ли такое сравнение if((paramData &= 0x80) == 1) // проверка на наличие единицы(1) в 8-ом бите данного байта длины...

Записать 4 числа по два бита - C++
как записать 4 числа по два бита.(Например, число 3213 будет 11 10 01 11) Числа задаются так a=rand()%3 Потом эту последовательность...

Битовые операции. Скопировать 4 бита - C++
простите, у меня tmp выходит 111М, соответственно переменная B выходит 100111М, а как сделать так чтобы было 1111 и 1001111? просто нужно...

Как считать блок в 64 бита? - C++
ок, для DES мне надо считать блок в 64 бита но считывать я могу только байты, поэтому мне надо считать 8 байт потом один байт в...

Вывести значение заданного бита - C++
Как вывести значение заданного бита в числе?


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

Или воспользуйтесь поиском по форуму:
Evg
Эксперт CАвтор FAQ
17533 / 5771 / 369
Регистрация: 30.03.2009
Сообщений: 15,872
Записей в блоге: 26
26.06.2012, 19:35     Копирование бита #24
Цитата Сообщение от taras atavin Посмотреть сообщение
Так вот, исходя из того, что операции в любом случае будут битовыми, как их сделать быстрее?
Я уже писал - пофигу как делать. Хоть так, хоть эдак у тебя код будет более-менее одинаковый
Yandex
Объявления
26.06.2012, 19:35     Копирование бита
Ответ Создать тему
Опции темы

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