Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Сборка битового слова  (Прочитано 3411 раз)

Серега

  • Старожил
  • ****
  • Сообщений: 287
    • Просмотр профиля
Сборка битового слова
« : 07 Сентября 2020, 14:36:27 »
Добрый день!
Задача: из разных чисел формата int собрать, например word переслать его по сети дальше.
Допустим номер объекта в очереди 3 (не более 7) первых 3 бита. (номер бита в слове 0, 1, 2)
Далее наличие у объекта системы дверей - 1 бит  (номер бита 3)
Количество дверей справа у объекта, например 3 и 1 и 3 двери заблокированы (для количества с 4 по 6 биты, далее каждый бит за одну дверь).
Надеюсь понятно объяснил.
Пока есть вариант конкретно привязывать установку одиночных битов через SetBit.
Далее конкретные числа, занимающие более одного бита устанавливать так же через SetBit через повтор и if.
Но возможно опять не дочитал в справке есть более простой способ.
Можете указать направление?
И как бы подвопрос. Можно ли как то в свойстве переменной, например "Формат", указать отображение переменной в битовом виде. То есть если значение равно 3, то отобразить "0011"?

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3215
    • Просмотр профиля
    • Simple-Scada
Re: Сборка битового слова
« Ответ #1 : 08 Сентября 2020, 16:18:54 »
Здравствуйте.

Все функции для работы с битами описаны здесь. Также компилятор поддерживает битовые сдвиги через shr и shl. Если данные функции не подходят и у вас "сложная" последовательность битов,то нужно проходить по каждому биту и выделять нужные данные через getBit и т.п..