![]() |
||
|
*停權中*
加入日期: Dec 2018
文章: 53
|
關於半精度浮點問題
有沒有 半精度浮點 (Half float) 轉換 int16_t 的方法
![]() |
|||||||
|
|
|
Advance Member
![]() ![]() 加入日期: Apr 2005
文章: 431
|
除了每天支支叫外
![]() google 一下 IEEE 754-1985 的規範可以嗎? ![]() |
||
|
|
|
*停權中*
加入日期: Dec 2018
文章: 53
|
引用:
支歸支,浮點歸浮點 不懂不要亂回答可以嗎? 你不要又要來說 Linux 是 GCC 寫的 ![]() |
|
|
|
|
Advance Member
![]() ![]() 加入日期: Apr 2005
文章: 431
|
都告訴你去看 spec 了, 裡面就有答案了
![]() 還是不會嗎? 可以再問, 我會告訴你怎麼做的, 我可是很少教人這種junior的問題 ![]() 對了 你的水土散熱器進化到哪一版了啊? ![]() 此文章於 2019-04-13 06:09 PM 被 冬之炎陽 編輯. |
|
|
|
*停權中*
加入日期: Dec 2018
文章: 53
|
引用:
有答案 意思就是說 你知道就對了 那測試一下 看你是真知道 還是假知道 這段你看得懂嗎 代碼:
unsigned int2hfloat(int x)
{
unsigned sign = x < 0;
unsigned absx = ((unsigned)x ^ -sign) + sign; // safe abs(x)
unsigned tmp = absx, manbits = 0;
int exp = 0, truncated = 0;
// calculate the number of bits needed for the mantissa
while (tmp)
{
tmp >>= 1;
manbits++;
}
// half-precision floats have 11 bits in the mantissa.
// truncate the excess or insert the lacking 0s until there are 11.
if (manbits)
{
exp = 10; // exp bias because 1.0 is at bit position 10
while (manbits > 11)
{
truncated |= absx & 1;
absx >>= 1;
manbits--;
exp++;
}
while (manbits < 11)
{
absx <<= 1;
manbits++;
exp--;
}
}
if (exp + truncated > 15)
{
// absx was too big, force it to +/- infinity
exp = 31; // special infinity value
absx = 0;
}
else if (manbits)
{
// normal case, absx > 0
exp += 15; // bias the exponent
}
return (sign << 15) | ((unsigned)exp << 10) | (absx & ((1u<<10)-1));
}
半精度浮點是幾 byte ![]() 你知道不知道 我想問的是什麼東西 ![]() 此文章於 2019-04-13 07:20 PM 被 拿破崙波拿巴 編輯. |
|
|
|
|
Advance Member
![]() ![]() 加入日期: Apr 2005
文章: 431
|
這種演算法網路上隨便找就一大堆
老是幹這種沒價值的事情 還用 android 2 要跑 ruby 有什麼好屁的 ![]() |
|
|
|
*停權中*
加入日期: Dec 2018
文章: 53
|
引用:
所以你根本就來亂的嘛 上面我貼出來的是 int 轉 半精度浮點 我想知道的是 半精度浮點 轉 int 你說找一大堆 那你找來給我看看 ![]() |
|
|
|
|
Advance Member
![]() ![]() 加入日期: Apr 2005
文章: 431
|
引用:
我剛剛就講了, 這種code網路上一堆 去看懂 IEEE 754-1985 規範就會寫float to int了 根本就不需要去找別人寫的東西 這還是念資工大2的回家功課 ![]() 連結貼給你 https://en.wikipedia.org/wiki/IEEE_754-1985 問這種超基本的問題 我不覺得你適合當工程師 ![]() 此文章於 2019-04-13 08:48 PM 被 冬之炎陽 編輯. |
|
|
|
|
*停權中*
加入日期: Dec 2018
文章: 53
|
引用:
你是來亂的沒錯阿 半精度浮點在哪 要不要我提示你一下 https://zh.wikipedia.org/wiki/%E5%8...%82%B9%E6%95%B0 你貼的 32-bit / 64-bit 的給我幹嘛 我早就看爛了 32-bit / 64-bit 轉換我還用你教阿 ![]() 此文章於 2019-04-13 09:08 PM 被 拿破崙波拿巴 編輯. |
|
|
|
|
Advance Member
![]() ![]() 加入日期: Apr 2005
文章: 431
|
god bless your boss
|
|
|