Segnetics

Вернуться   Segnetics > Форум Segnetics > SMLogix

SMLogix Вопросы о работе в среде SMLogix и о FBD-программировании

Ответ
 
Опции темы Поиск в этой теме
Старый 15.03.2017, 10:37   #1
PA3JlUBHOE
Member
 
Регистрация: Jun 2012
Адрес: СПб
Сообщения: 77
Благодарил(а): 7 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию shl(32) (решено)

Подскажите, плиз, как сделать блок shl(32) по аналогии с shl(16). Нужно для замены pow с основанием 2.
PA3JlUBHOE вне форума   Ответить с цитированием
Старый 15.03.2017, 11:11   #2
tvf
Senior Member
 
Регистрация: Dec 2011
Сообщения: 755
Благодарил(а): 1 раз(а)
Поблагодарили: 10 раз(а) в 10 сообщениях
По умолчанию Ответ: shl(32)

1. Сначала с помощью reg32->bits разбиваете на биты
2. Потом с помощью bool->int формируете 2 int
3. Оба числа с помощью SHL(16) сдвигаете на нужное число разрядов
4. Число из младших разрядов, полученное в п.2 с помощью SHR(16) сдигаете на 16(15)-n, где n - нужное число разрядов.
5. Число полученное в п.4 и число из старших разрядов сдвинутое в п.3 с помощью OR (16) суммируете.
6. Число полученное в п.5 и исло из младших разрядов сдвинутое в п.2 с помощью reg16->bits разбиваете на биты
7. С помощью bool->long из этих бит формируете результат.

Только логические операции. Но сдвигать не более 16(15) разрядов. Если надо больше, то разбить на 2 такие операции.


__________________
Нет абсолютно бездарных людей. Каждый бездарен в своей области.
tvf вне форума   Ответить с цитированием
Старый 15.03.2017, 11:37   #3
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 117
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: shl(32)

Цитата:
Сообщение от PA3JlUBHOE Посмотреть сообщение
Подскажите, плиз, как сделать блок shl(32) по аналогии с shl(16). Нужно для замены pow с основанием 2.
Для упрощения. Старшее и младшее слова можно получить отсюда: http://forum.segnetics.com/showthread.php?t=736


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 16.03.2017, 11:43   #4
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 117
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: shl(32)

Цитата:
Сообщение от PA3JlUBHOE Посмотреть сообщение
Подскажите, плиз, как сделать блок shl(32) по аналогии с shl(16). Нужно для замены pow с основанием 2.
Добавил в библиотечку шифты 32-хразрядные. Много потребляют, поэтому использовать по крайней необходимости на контроллерах ниже SMH-2Gi.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 16.03.2017, 14:47   #5
PA3JlUBHOE
Member
 
Регистрация: Jun 2012
Адрес: СПб
Сообщения: 77
Благодарил(а): 7 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: shl(32) (решено)

В библиотечку это куда?
Что лучше shl(32) или pow для основания 2?
PA3JlUBHOE вне форума   Ответить с цитированием
Старый 16.03.2017, 15:46   #6
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 117
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: shl(32) (решено)

Цитата:
Сообщение от PA3JlUBHOE Посмотреть сообщение
В библиотечку это куда?
Что лучше shl(32) или pow для основания 2?
Нужно сравнивать. Но shl(32) работает тем дольше, чем на больше нужно сдвинуть. Возможно, на 1-2 разряда и быстрее, чем pow будет. Может и на 3-4. Но на 20-30 разрядов точно медленнее.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 16.03.2017, 18:53   #7
PA3JlUBHOE
Member
 
Регистрация: Jun 2012
Адрес: СПб
Сообщения: 77
Благодарил(а): 7 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: shl(32) (решено)

Цитата:
Сообщение от Arsie Посмотреть сообщение
Нужно сравнивать. Но shl(32) работает тем дольше, чем на больше нужно сдвинуть. Возможно, на 1-2 разряда и быстрее, чем pow будет. Может и на 3-4. Но на 20-30 разрядов точно медленнее.
СПС! Но на счёт библиотечки не понял. Где её найти?
PA3JlUBHOE вне форума   Ответить с цитированием
Старый 16.03.2017, 19:16   #8
Gromov
Уволен из Сегнетикс
 
Регистрация: Nov 2015
Адрес: CПб/ВЛГ
Сообщения: 0
Благодарил(а): 0 раз(а)
Поблагодарили: 1 раз в 1 сообщении
По умолчанию Ответ: shl(32) (решено)

Да вот здесь же.


__________________
В сегнетиксе не работаю с самого начала 2019 года.
Gromov вне форума   Ответить с цитированием
Старый 16.03.2017, 19:20   #9
PA3JlUBHOE
Member
 
Регистрация: Jun 2012
Адрес: СПб
Сообщения: 77
Благодарил(а): 7 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: shl(32) (решено)

Цитата:
Сообщение от Gromov Посмотреть сообщение
Я посмотрел на дату последнего сообщения - 2011 и не стал тему открывать)
PA3JlUBHOE вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать свои сообщения

BB code is Вкл.
[IMG] код Вкл.
HTML код Выкл.



Часовой пояс GMT +4, время: 17:35.


Версия vBulletin: 3.8.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Segnetics 2005 - 2024