SIEMENS, DF&PD

Предыдущее посещение: Пн июн 27, 2016 17:37 Текущее время: Пн июн 27, 2016 17:37

Часовой пояс: UTC + 3 часа




 [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Разъясните типы переменных
СообщениеДобавлено: Чт сен 01, 2011 14:21 
Не в сети
Известный Писатель

Зарегистрирован: Вт июн 07, 2011 22:54
Сообщения: 359
Простой вопрос, извините если не совсем по теме форума.

Есть чило 1 в Integer сколько это будет в real?

И наоборот есть 1,0 в Real сколько это будет в integer и почему?


p.s. Вопрос возник из-за того что в симуляторе в двойном слове ввел 1,0 в Real - поставил integer и полуичл значение 1065353216.

То есть выходит 1.0 Real = 1065353216 integer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт сен 01, 2011 14:58 
Не в сети
Написал больше чем Вы читали

Зарегистрирован: Вс фев 26, 2006 21:44
Сообщения: 1688
Откуда: Липецк, ОАО "НЛМК"
" сколько это будет в real?"
А вы переводите или как?
INT хранится в 16 битах(2 байта) в двоичном виде и может принимать значения от -32768 до +32767
REAL хранится в 32 битах(4 байта) в соответсвии с международным стандартом IEEE754, расписанном тут:
http://upload.wikimedia.org/wikipedia/c ... xample.svg
Если вы поместите куда-то число "1,0" как REAL и прочитаете адрес как INT - естественно, получите ерунду

P.S. не забывайте про разницу между Big-Endian и Little-Endian!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт сен 01, 2011 15:09 
Не в сети
Написал больше чем Вы читали

Зарегистрирован: Ср июл 07, 2010 0:27
Сообщения: 1230
Откуда: ООО Фирма "КГПА"
Вы столкнулись с преобразованием без изменения назначения битов, а вам нужно конвертировать, тогда 1 спокойно преобразуется в 1.0:
Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт сен 01, 2011 16:40 
Не в сети
Известный Писатель

Зарегистрирован: Вт июн 07, 2011 22:54
Сообщения: 359
Ясно, спасибо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разъясните типы переменных
СообщениеДобавлено: Чт сен 01, 2011 16:51 
Не в сети
Это точно не человек

Зарегистрирован: Чт фев 16, 2006 12:27
Сообщения: 7508
Откуда: Украина
anjeyjoy писал(а):
Есть чило 1 в Integer сколько это будет в real?

И наоборот есть 1,0 в Real сколько это будет в integer и почему?[/b]

p.s. Вопрос возник из-за того что в симуляторе в двойном слове ввел 1,0 в Real - поставил integer и полуичл значение 1065353216.

То есть выходит 1.0 Real = 1065353216 integer.

Какая разница, как будет выглядеть число, представленное в формате Real (точнее - float), если его рассматривать как число в формате Integer?

Вот почему 1.0 "выглядит как" 1065353216:
10#1065353216 -> 2#00111111100000000000000000000000.
1.0 -> 0 01111111 00000000000000000000000.
Знак = 0 (число положительное), сдвинутый порядок = 01111111 (127 = 127 + 0), дробная часть нормализованной мантиссы = 0 (целая часть всегда равна 1 и в кодировании числа с плавающей запятой не участвует, но учитывается при выполнении арифметических операций). Получается +1.0 х 2^0, т.е. 1.0.

Как видите, набор нулей и единиц идентичен, вся суть в том, как он будет интерпретирован в программе контроллера.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
 [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group