2011-03-14 200 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++中都没有区别。