Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 09:27 05.07.25 
Компютри и Интернет
   >> Програмисти
*Кратък преглед

Страници по тази тема: 1 | 2 | 3 | (покажи всички)
Тема Битово присвояване float -> intнови  
Автор Pekoнcтpykтop (дарвинист)
Публикувано06.12.09 12:41



Има ли някаква общоприета конвенция, когато искаш да прехвърлиш физическата стойност на float някъде другаде, примерно в int, без да ползваш memcpy, или нещо от сорта i = *((int*)&f) (нема да мине ни едно код ревю)?
Също има ли начин за битово сравняване на две променливи с еднакъв размер?



Тема Re: Битово присвояване float -> intнови [re: Pekoнcтpykтop]  
Автор Colombino (програмист)
Публикувано06.12.09 13:36



Бе общоприета конвенция за такива фокуси ме съмнява да има, но най-културно ми се вижда с юнион с констуктори. Ето ти цяло работещо програмче за пример как се ползва:

#include <iostream>


using namespace std;

union Mem32
{
float fVal;
int iVal;

Mem32(float f) : fVal(f) {}
Mem32(int i) : iVal(i) {}

bool operator == (const Mem32& r) const { return iVal == r.iVal; }
bool operator != (const Mem32& r) const { return iVal != r.iVal; }
};

int main(void)
{
Mem32 a(5);
Mem32 b(2.5f);

cout << (a == 5) << endl;
cout << (b == 2.5f) << endl;
cout << (a != 5) << std::endl;
cout << (b != 2.5f) << std::endl;

return 0;
}


ПП: тая идиотия слага по един празен ред в повече.

System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_


Тема Re: Битово присвояване float -> intнови [re: Pekoнcтpykтop]  
Автор zaphod (мракобес)
Публикувано06.12.09 14:03



ако някой ти скочи че е некултурно, можеш да му нашокаш ряпата че микрософт ползват това нещо съвсем официално, в апито на директХ. говоря за функцията SetRenderState, която приема параметър DWORD, но ако рендер стейта който се бара иска флоат стойност, се предава точно като *((int*)&f)




NE SUTOR ULTRA CREPIDAM


Тема Re: Битово присвояване float -> intнови [re: zaphod]  
Автор Colombino (програмист)
Публикувано06.12.09 14:26



Бе тоя аргумент с Майкрософт едва ли ще мине на място, където гледат да пишат културно. Майкрософт не са известни с културата си на писане, напротив. Най-малкото нема да мине тоя каст ако го викаш от C++ (требва reinterpret_cast). Тук между другото си направил const_cast без да искаш.

System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_


Тема Re: Битово присвояване float -> intнови [re: Colombino]  
Автор zaphod (мракобес)
Публикувано06.12.09 14:37



Най-малкото нема да мине тоя каст ако го викаш от C++
ти ли го каза това?!?






NE SUTOR ULTRA CREPIDAM


Тема Re: Битово присвояване float -> intнови [re: zaphod]  
Автор Colombino (програмист)
Публикувано06.12.09 14:59



Не ме разбра. Ревю нема да мине.

System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_


Тема Re: Битово присвояване float -> intнови [re: Colombino]  
Автор BlGBUGEX (нерегистриран)
Публикувано06.12.09 15:34



Що? Де го това ревю?
Ако ме пита някой - въздухарски работи. С++-систите сте били много набожни бре.



Тема Re: Битово присвояване float -> intнови [re: BlGBUGEX]  
Автор Colombino (програмист)
Публикувано06.12.09 15:43





System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_


Тема unionнови [re: Pekoнcтpykтop]  
Автор ~@!$^%*amp;()_+ (целия горен ред)
Публикувано06.12.09 21:18







Тема Re: unionнови [re: ~@!$^%*amp;()_+]  
Автор ak_47 ()
Публикувано06.12.09 21:25



Не съм гo пробвал но евентуално би трябвало да проработи:

template< typename TIn, typename TOut >
union TypeConverter
{
TIn inValue;
TOut outValue;
};

void Foo()
{
TypeConverter<int,float> test;
test.inVal = 5;
float result = test.outVal;

}

may the source be with you...

Редактирано от ak_47 на 06.12.09 21:25.




Страници по тази тема: 1 | 2 | 3 | (покажи всички)
*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2025 Dir.bg Всички права запазени.