PCDVD數位科技討論區

PCDVD數位科技討論區 (https://www.pcdvd.com.tw/index.php)
-   疑難雜症區 (https://www.pcdvd.com.tw/forumdisplay.php?f=34)
-   -   關於半精度浮點問題 (https://www.pcdvd.com.tw/showthread.php?t=1160481)

拿破崙波拿巴 2019-04-13 11:36 AM

關於半精度浮點問題
 
有沒有 半精度浮點 (Half float) 轉換 int16_t 的方法 :confused:

冬之炎陽 2019-04-13 01:42 PM

除了每天支支叫外 :unbelief:
google 一下 IEEE 754-1985 的規範可以嗎? :unbelief:

拿破崙波拿巴 2019-04-13 03:33 PM

引用:
作者冬之炎陽
除了每天支支叫外 :unbelief:
google 一下 IEEE 754-1985 的規範可以嗎? :unbelief:


支歸支,浮點歸浮點 不懂不要亂回答可以嗎? :confused:
你不要又要來說 Linux 是 GCC 寫的 :think:

冬之炎陽 2019-04-13 06:08 PM

都告訴你去看 spec 了, 裡面就有答案了 :p
還是不會嗎? :laugh:
可以再問, 我會告訴你怎麼做的, 我可是很少教人這種junior的問題 :D

對了:D 你的水土散熱器進化到哪一版了啊? :D

拿破崙波拿巴 2019-04-13 07:17 PM

引用:
作者冬之炎陽
都告訴你去看 spec 了, 裡面就有答案了 :p
還是不會嗎? :laugh:
可以再問, 我會告訴你怎麼做的, 我可是很少教人這種junior的問題 :D

對了:D 你的水土散熱器進化到哪一版了啊? :D


有答案 :confused:

意思就是說 你知道就對了

那測試一下 看你是真知道 還是假知道 :D


這段你看得懂嗎 :laugh: :laugh:
代碼:
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 :D :D

你知道不知道 我想問的是什麼東西 :laugh: :laugh:

冬之炎陽 2019-04-13 07:55 PM

這種演算法網路上隨便找就一大堆
老是幹這種沒價值的事情
還用 android 2 要跑 ruby
有什麼好屁的 :D

拿破崙波拿巴 2019-04-13 08:09 PM

引用:
作者冬之炎陽
這種演算法網路上隨便找就一大堆
老是幹這種沒價值的事情
還用 android 2 要跑 ruby
有什麼好屁的 :D


所以你根本就來亂的嘛 :laugh: :laugh:

上面我貼出來的是 int 轉 半精度浮點
我想知道的是 半精度浮點 轉 int

你說找一大堆 那你找來給我看看 :laugh: :laugh:

冬之炎陽 2019-04-13 08:40 PM

引用:
作者拿破崙波拿巴
所以你根本就來亂的嘛 :laugh: :laugh:

上面我貼出來的是 int 轉 半精度浮點
我想知道的是 半精度浮點 轉 int

你說找一大堆 那你找來給我看看 :laugh: :laugh:


我剛剛就講了, 這種code網路上一堆
去看懂 IEEE 754-1985 規範就會寫float to int了
根本就不需要去找別人寫的東西
這還是念資工大2的回家功課 :p
連結貼給你
https://en.wikipedia.org/wiki/IEEE_754-1985

問這種超基本的問題
我不覺得你適合當工程師 :think:

拿破崙波拿巴 2019-04-13 09:05 PM

引用:
作者冬之炎陽
我剛剛就講了, 這種code網路上一堆
去看懂 IEEE 754-1985 規範就會寫float to int了
根本就不需要去找別人寫的東西
這還是念資工大2的回家功課 :p
連結貼給你
https://en.wikipedia.org/wiki/IEEE_754-1985

問這種超基本的問題
我不覺得你適合當工程師 :think:


你是來亂的沒錯阿 半精度浮點在哪 要不要我提示你一下 :laugh: :laugh:

https://zh.wikipedia.org/wiki/%E5%8...%82%B9%E6%95%B0

你貼的 32-bit / 64-bit 的給我幹嘛 我早就看爛了 :laugh:



32-bit / 64-bit 轉換我還用你教阿 :think:

冬之炎陽 2019-04-13 09:27 PM

god bless your boss


所有的時間均為GMT +8。 現在的時間是06:58 PM.

vBulletin Version 3.0.1
powered_by_vbulletin 2024。