2011-03-14 258 views
1

早上好,下午或晚上,使用十進制或十六進制

預警基地在.NET:我知道,這聽起來像我試圖做過早的優化,但我向你保證,我不是。那麼,請回答這個問題,如果你想盡我所能,而不指向我關於「過早優化」的鏈接。

是否有可能注意到使用以十進制和十六進制編寫的常量的大規模重複操作的性能差異?我看到有人寫

int b = a >> 0x1f; 

了很多,而不是

int b = a >> 31; 

這表明,無論他們來自一個C/C++的背景,或者他們可能會認爲操作執行得更快了(我不是說只有約按位操作)。是不是所有的常量都被C#編譯器翻譯成相同的基礎?或者在編寫代碼的時候在使用base 16的時候可以有任何優勢?

非常感謝,

回答

4

這將不會有什麼區別,因爲它們會被編譯成相同的東西。

它使代碼更易於讀取二進制操作,因爲使用十六進制可以更容易地讀取這些位。從十進制轉換 - >二進制在精神上很難做到。

0x1F的將是:

1 - > 0001

+

的F - > 1111

= 00011111

1

這些兩個語句是相同的編譯器。這只是用戶偏好的問題。

0

唯一的優點是對於習慣以十六進制工作的人來說它更具可讀性。整數是一個整數,不管是用十進制文字還是十六進制表示。

0

我看到的唯一優點是按位操作通常在十六進制中更有意義。但是,這個轉變並不(在我看來)。

0

他們確實被解釋爲在IL中完全相同的東西,而第一個很難爲大多數人閱讀。所以十六進制方法沒有多大優勢。

0

一個數字是一個數字,十進制或十六進制只是一種表示方式,用人們可以讀取的方式將數字寫在屏幕上。所以在c/C++中都沒有區別。