Здравствуйте!
Стало необходимо вывести на экран ПР200 отрицательное целое число, и вот незадача...
Помню еще со времен программирования на ассемблере для ZX Spectrum-а:
- тип int от -32768 до +32768 (Word)
- тип uint от 0 до 65535 (Word)
Везде в языках программирования и в классическом понимании тип int это знаковое целое число.
Почему здесь оно только положительное беззнаковое? При всем том, что в том же OwenCloud есть int16, uint16...
Основной конечно вопрос как вывести на экран ПР200 отрицательное целое число - естественно без дробной части.
Для начала определитесь где Вы возьмете это отрицательное целое число
Варианты
а) - в сетевой переменной от внешнего устройства
б) - в результате вычислений
вариант а) предполагает диапазон от -32768 до -32767
вариант б) предполагает диапазон от -2147483648 до 2147483647
В обоих случаях отрицательные значения будут представлены в дополнительном коде
в программе определяете знак и модуль(абсолютное значение) числа, для а) нужен макрос для 16 битных чисел, для б) - для 32 битных
На экране - составной элемент битовое поле (+/-) рядом поле для вывода числа (int)
ЗЫ.
Макросы
Абсолютное значение 32битных чисел + знак
Захват-3.png
Абсолютное значение 16битных чисел + знак
Захват-2.png
Экран
Захват-4.png
Результат работы
Захват-1.png
Последний раз редактировалось petera; 21.11.2019 в 12:39.
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Мой канал на РУТУБЕ
https://rutube.ru/channel/23641433/
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
... Большое спасибо!
Честно говоря удивлен такой сложностью при вроде самой простой задаче...
Еще можно преобразовать int в float
Пару элементов к макросам ABS()
16 бит
Захват-2.png
32 бита
Захват-3.png
Тогда на экран можно вывести число с плавающей точкой, там "-" автоматический
Захват-5.png
Захват-4.png
Результат
Захват-1.png
Однако на экране нельзя вывести float без точки, минимум один знак после запятой, придется замазывать (по верх накладывать 2 пробела)
Да float имеет ограниченную точность и как следствие меньший диапазон представления целых чисел - максимум 7 знаков.
ЗЫ.
Сложностей нет, сделай/позаимствуй себе всяких макросов и затем просто применяй их. Получается расширение возможностей среды разработки.Честно говоря удивлен такой сложностью при вроде самой простой задаче...
Последний раз редактировалось petera; 21.11.2019 в 13:44.
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Мой канал на РУТУБЕ
https://rutube.ru/channel/23641433/
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Обычно так и делаю.
Может подскажете как лучше вывести на экран редактируемое целое отрицательное цисло? Если выводить float с замазкой, то пользователь, нажимая "SEL", не видит мигающих замазанных знаков после запятой и, соответственно, ничего не понимает
Если выводить int и отельно знак, то знак оказывается оторванным от числа, тем дальше оторванным, чем меньше разрядов у числа...
в программе можно посчитать количество разрядов числа и при отображении знака менять переменную оси х для знака.
Может проще отвести на два разряда(знака) меньше, чтобы запятая и десятые доли не отображались?
Полное отображение.PNG
Обрезанное отображение.PNG
Последний раз редактировалось Сергей0308; 23.11.2019 в 18:22.
Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
справиться с проблемами, либо это не твои проблемы.
Последний раз редактировалось Сергей0308; 23.11.2019 в 18:34.
Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
справиться с проблемами, либо это не твои проблемы.