在處理圖形運算,特別是3d圖形生成運算時,往往要定義乙個fixed資料型別,我稱它為定點數,定點數其時就是乙個整形資料型別,他的作用就是把所有數 進行轉換,從而得到相應型別的整型表達,然後使用定點數進行整行運算,取到最終值並將其轉換回實際的基本資料型別。因此它是通過避免大量的浮點運算來加快 圖形處理的乙個方式。
fixed是業界使用最廣的一種型別,他並沒有在標準c或者其他語言中定義,程式設計師可以靈活的使用fixed型別,可以定義自己想要的fixed型別。那 麼什麼是fixed型別呢?fixed型別是用來取代浮點,使用4位元組的高2個位元組表示整數字,低2個位元組表示浮點位。每個位元組有8個bit位,4個位元組 32個bit位,因此,我們把這種fixed稱為16.16fixed。當然,也有使用24.8的fixed,這就要看需求和精確度了。比如fixed中 的數字1,就是65536,也就是(1<<16)。這裡用了位移公式,就是將1左移16位,也就是2個位元組,左移16等於剩以65536,只 不過位移來的非常快,快過加法。(這裡理解不了就算了)比如數字32.5,等於(32<<16)|32768,等於 32*65536+32768。為什麼要這麼麻煩呢?有了fixed,就好像操作整數一樣,都是整數運算了。fixed的四捨五入也很簡單,比如我們將x 四捨五入到整數型別,就是(x+32768)>>16。32768就是半個fixed的1,也就是浮點的0.5。右移16位就是除以 65536,為的是將高2位元組移到正常的整數字上。我都說暈了,以後慢慢解釋給大家,呵呵。
fixed型別說了一堆,究竟來做什麼的?
比如上例中,y軸每次都要偏移0.4,而這個數是個浮點,嚴重影響了運算速度。比如,我們後台有乙個數,用來計量y軸本次的座標,就叫做變數yy吧。x每 次都加1,也就是xx++,y每次加0.4,也就是yy+=0.4。為了提高速度,我們將yy公升級到fixed型別,yy每次加fixed的0.4,也就 是0.4*65536=26214,然後再四捨五入到整數型別,即yy+=26214,y=(yy+32768)>>16。這樣,就得到了每 次的整數y,並且都是整數的加減和位運算,速度非常快
fixed資料型別
在處理圖形運算,特別是3d圖形生成運算時,往往要定義乙個fixed資料型別,我稱它為定點數,定點數其時就是乙個整形資料型別,他的作用就是把所有數 進行轉換,從而得到相應型別的整型表達,然後使用定點數進行整行運算,取到最終值並將其轉換回實際的基本資料型別。因此它是通過避免大量的浮點運算來加快 圖形處理...
mysql fixed資料型別 fixed資料型別
在處理圖形運算,特別是3d圖形生成運算時,往往要定義乙個fixed資料型別,我稱它為定點數,定點數其時就是乙個整形資料型別,他的作用就是把所有數 進行轉換,從而得到相應型別的整型表達,然後使用定點數進行整行運算,取到最終值並將其轉換回實際的基本資料型別。因此它是通過避免大量的浮點運算來加快 圖形處理...
資料型別基礎資料型別
資料型別 基礎型別 除八大基礎型別其他的都是引用型資料型別 引用資料型別 基礎資料型別 整型 byte 佔乙個位元組,範圍 128 127 short 佔兩個位元組,範圍 32768 32767 int 最常用 佔四個位元組,範圍 2147483648 2147483647 long 佔八個位元組 ...