Отговори на тема  [ 4751 мнения ]  Отиди на страница Предишна  1 ... 163, 164, 165, 166, 167, 168, 169 ... 317  Следваща
Тема за бързи и тъпи въпроси 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 8:04 pm
Мнения: 2664
Местоположение: София / Велико Търново
Мнение Re: Тема за бързи и тъпи въпроси
е, че то не може ли да се настрои компилаторът да не дава warning :roll:
Така остава впечатление, че има връзка със семантиката.

_________________
https://github.com/slav4ocom/


Нед Сеп 12, 2021 12:41 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Вто Авг 17, 2021 10:54 am
Мнения: 9
Мнение Re: Тема за бързи и тъпи въпроси
itso.t написа:
Бърз и тъп въпрос, по темата. :D

Гледам чужди С сорсове за някакъв дериват на 8051.
Прави ми впечатление, че при шифтване на битове се прави конвертиране на типове, познато и като type casting.
Код:
a = (uint8_t) b << 2;

Двете променливи са 8-битови. Интересува ме дали това е "добра практика", презастраховане, или е ненужно?


Напиши в Гугъл: "bit shifting integer promotion".


Нед Сеп 12, 2021 2:21 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30929
Местоположение: София
Мнение Re: Тема за бързи и тъпи въпроси
ако това е keil въобще не опира само до warning-а ами компилатора ще работи с 16 битови числа, и е силно желателно да кастваш в такива случаи. Има настройка в микровижъна да не промотва подобни операции, това важи не само за шифтване но и събиране на два чара примерно https://www.keil.com/support/docs/1754.asp


Нед Сеп 12, 2021 2:39 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 03, 2005 2:21 am
Мнения: 12947
Местоположение: София
Мнение Re: Тема за бързи и тъпи въпроси
Изясни ми се. Мерси.
Отива в графа "задължителни".


Нед Сеп 12, 2021 4:47 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Юни 03, 2005 9:39 pm
Мнения: 2303
Мнение Re: Тема за бързи и тъпи въпроси
Type cast има смисъл ако b e със знак. Ако е без знак едва ли има компилатор, който ще се сърди за това.


п.п.
Ако е със знак, така или иначе не е редно да правиш местене.

_________________
Определянето стойността на дадена величина се нарича ИЗМЕРВАНЕ! Опонентът се оборва с ФАКТИ, а не с ЕПИТЕТИ!


Нед Сеп 12, 2021 5:46 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 8:04 pm
Мнения: 2664
Местоположение: София / Велико Търново
Мнение Re: Тема за бързи и тъпи въпроси
Ако е със знак няма ли да премести само битовете без знаковия ?

_________________
https://github.com/slav4ocom/


Нед Сеп 12, 2021 8:11 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 03, 2005 2:21 am
Мнения: 12947
Местоположение: София
Мнение Re: Тема за бързи и тъпи въпроси
syscop написа:
Type cast има смисъл ако b e със знак. Ако е без знак едва ли има компилатор, който ще се сърди за това.

В случая не става въпрос за съобщения на компилатора. Както съм споменал и по-напред, той не се сърди и в двата случая.

Както и да е. За мен въпросът е изяснен.


Нед Сеп 12, 2021 9:00 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Юни 03, 2005 9:39 pm
Мнения: 2303
Мнение Re: Тема за бързи и тъпи въпроси
Някъде из стандартите пишеше, че има неопределеност при дадени условия. Освен "програмиста" няма нужда от още един източник на ентропия :).
Принципът е: за аритметика - аритметични операции, за логика - логически. Повечето съвременни компилатори ще направят необходимото, за да генерират оптимален код.

п.п.
@slav4o.com

_________________
Определянето стойността на дадена величина се нарича ИЗМЕРВАНЕ! Опонентът се оборва с ФАКТИ, а не с ЕПИТЕТИ!


Нед Сеп 12, 2021 9:08 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30929
Местоположение: София
Мнение Re: Тема за бързи и тъпи въпроси
Ами не винаги генерира оптимален код, особенно кейла.


Пон Сеп 13, 2021 8:04 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Фев 04, 2005 9:59 pm
Мнения: 6019
Местоположение: София
Мнение Re: Тема за бързи и тъпи въпроси
syscop написа:
п.п.
Ако е със знак, така или иначе не е редно да правиш местене.

А число с плаваща запетая редно ли е да се мести или първо го кастваш в int, след това местиш и после връщаш обратно в float?
Код:
float rsqrt( float number )
{
   long i;
   float x2, y;
   const float threehalfs = 1.5F;

   x2 = number * 0.5F;
   y  = number;
   i  = * ( long * ) &y;                       
   i  = 0x5f3759df - ( i >> 1 );               // what the fuck?
   y  = * ( float * ) &i;
   y  = y * ( threehalfs - ( x2 * y * y ) );   
//   y  = y * ( threehalfs - ( x2 * y * y ) ); 

   return y;
}

_________________
Warriors of the Night, ASSEMBLER!!!


Пон Сеп 13, 2021 8:34 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Юни 03, 2005 9:39 pm
Мнения: 2303
Мнение Re: Тема за бързи и тъпи въпроси
Знам ли? Ако го разделиш на 2 в конкретния случай всякакви "упражнения" по cast-ване стават излишни.

_________________
Определянето стойността на дадена величина се нарича ИЗМЕРВАНЕ! Опонентът се оборва с ФАКТИ, а не с ЕПИТЕТИ!


Пон Сеп 13, 2021 8:45 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Фев 04, 2005 9:59 pm
Мнения: 6019
Местоположение: София
Мнение Re: Тема за бързи и тъпи въпроси
syscop написа:
Знам ли? Ако го разделиш на 2 в конкретния случай всякакви "упражнения" по cast-ване стават излишни.

В случая делиш на 2 експонентата и получаваш коренквадратен.

_________________
Warriors of the Night, ASSEMBLER!!!


Пон Сеп 13, 2021 11:29 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Юни 03, 2005 9:39 pm
Мнения: 2303
Мнение Re: Тема за бързи и тъпи въпроси
Местенето надясно (i >> 1) да стане деление на две - (i / 2). Така няма нужда от cast-ване.

_________________
Определянето стойността на дадена величина се нарича ИЗМЕРВАНЕ! Опонентът се оборва с ФАКТИ, а не с ЕПИТЕТИ!


Пон Сеп 13, 2021 11:36 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Юни 05, 2006 1:48 pm
Мнения: 4950
Местоположение: където небето среща земята, ракията е Jameson, а бирата Guinness
Мнение Re: Тема за бързи и тъпи въпроси
И за чий ти е това упражнение?
Преди 20 години може би е имало файда да семправят подобни гимнастики, но сега повечето компилатори оеавят доста добри оптимизации.
Premature optimization iz the root of all evil -това го е казал Кнут, пък на него може да се вярва....

_________________
... ако трети ден не ти се работи... това означава, че е сряда !


Пон Сеп 13, 2021 11:41 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Фев 04, 2005 9:59 pm
Мнения: 6019
Местоположение: София
Мнение Re: Тема за бързи и тъпи въпроси
MYXATA написа:
И за чий ти е това упражнение?

Всичко тръгна от това, че почнах да се заяждам с syscop, който каза:
Цитат:
Ако е със знак, така или иначе не е редно да правиш местене.

Аз по принцип съм съгласен с него, но винаги има изкючения.
За това и дадох примера където местят float, който има не само знак, ами и екпонента.
В момента това упражнение е безмислено, сега като има SIMD инструкции за rsqrt.
Повече информация:
The Amazing Speed of Quake III (Е01): https://www.youtube.com/watch?v=uCv5VRf8op0
The Amazing Speed of Quake III (Е02): https://www.youtube.com/watch?v=Fm0vygzVXeE

_________________
Warriors of the Night, ASSEMBLER!!!


Пон Сеп 13, 2021 4:23 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 4751 мнения ]  Отиди на страница Предишна  1 ... 163, 164, 165, 166, 167, 168, 169 ... 317  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни