Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 40

Упаковка пакета с помощью операции сдвига

04.06.2015, 21:26. Показов 1727. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
здравствуйте подскажите пожалуйста, правильно ли написано по этой картинке


C++
1
2
3
4
unsigned_int16 a,b;
packet[0] = a <<8;
packet[1] = a<<5 | 1<<4| b <<8
packet[2] = b;
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.06.2015, 21:26
Ответы с готовыми решениями:

Упаковка распаковка чисел(битовые операции)
у меня есть числа от 1 до 15, тоесть каждое занимает полубайт мне надо упаковать такие числа (которых всегда четное количество) в один...

Операции сдвига
Через операторы сдвига можно в одну переменную поместить несколько значений. int A = 0; int b = {44,45,46}; A =...

Операции сдвига
Помогите понять операции сдвига. Вот два примера левого и правого сдвига. 9 (base 10): 00000000000000000000000000001001...

4
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 40
04.06.2015, 21:56  [ТС]
посмотрите пожалуйста...
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
04.06.2015, 22:14
C++
1
2
3
4
5
6
7
8
9
10
#include <cstdint>
 
void fill_packet(uint8_t packet[3], uint16_t a, uint16_t b) {
    // нумерация бит начинается с нуля
    packet[0] = a & 0xff;         // биты 0-7 из a
    packet[1] = 1 << 3;           // бит в 3-ей позиции
    packet[1] |= (a >> 8) & 0x07; // биты 8-10 из a
    packet[1] |= b & 0x0f;        // биты 0-3 из b
    packet[2] = (b >> 4) & 0xff;  // биты 4-11 из b
}
1
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 40
04.06.2015, 23:07  [ТС]
спасибо..

Добавлено через 5 минут
только у меня в другом порядке идет
например чтобы сдвинуть 32 битное число
arr[0] = (chislo <<24) & 0xff
arr[1] = (chislo <<16) & 0xff
arr[2] = (chislo <<8) & 0xff
arr[3] = (chislo) & 0xff

Добавлено через 24 минуты
извиняюсь, нумерация битов идет в обратном порядке
0
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 40
07.06.2015, 10:12  [ТС]

подскажите пожалуйста, я всё-таки не разобралась до конца,
если в комбинированном байте участвуют b0 и с0 и оба причем располагаются
по младшим адресам,
то правильна ли такая запись?
packet[0] =( b>>8) & 0xFF;
packet[1] = b & 0xF8 | a & 0x7
packet[2] = (c>>8) & 0xFF;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.06.2015, 10:12
Помогаю со студенческими работами здесь

операции сдвига
помогите со сдвигом требуется сделать в цикле сдвиг нуля в такой последовательности. подскажите как сделать? 11111110 11111101 ...

Побитовые операции сдвига
Как работают операции сдвига вправо? Я всегда считал что освобождающиеся левые биты заполняются нулями. Оказывается это не всегда так. Если...

Операции сдвига в языке C.
Нужно сформировать шестнадцатеричное число с помощью операций сдвига. Помогите продолжить программу. #include &lt;stdio.h&gt; int...

Битовые операции сдвига и перестановки
Ребят, всем привет, помогите пожалуйста с задачей, ничего не понимаю, первокурсник:( Написать программу, которая позволит ввести два...

Операции сдвига, перегруженые функции. Объясните суть
Люди, помогите плиз. Дали на летнюю практику задания, которые в семестре не делали впринципе(учили простой Си). Первое задание такое:...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru