[問題] 關於量化寫法問題

看板C_and_CPP (C/C++)作者 (Gene)時間13年前 (2013/03/03 10:01), 編輯推噓0(002)
留言2則, 2人參與, 最新討論串1/1
開發平台(Platform): Windows Dev C++ 問題(Question):為什要加上16? 餵入的資料(Input):Pixel_A , Pixel_B , alpha 程式碼(Code): 以下是一般算出像素的blending之後的公式: Pixel_C = (int)(Pixel_A * alpha + Pixel_B * ( 1-alpha )); 不過為了效率,有些書本會把它量化alpha為0~32之間的一個整數值,所以公式改寫成: Pixel_C = (Pixel_A * alpha + Pixel_B * ( 32-alpha ) + 16)>>5; 看起來都沒有問題,不過我有疑惑的是,既然都已經>>5 ,為什麼要在>>5之前加上16呢? 我有想過是為了盡量達成16 alignment,不過想想後也不是這樣。 請問有人知道為什麼要加上16呢? 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.169.39.88

03/03 10:57, , 1F
四捨五入 可以畫y=x>>5和y=(x+16)>>5的圖看看
03/03 10:57, 1F

03/03 11:09, , 2F
謝謝樓上分享。
03/03 11:09, 2F
文章代碼(AID): #1HCgxcGH (C_and_CPP)
文章代碼(AID): #1HCgxcGH (C_and_CPP)