C# 在.NET中使用十进制或十六进制

C# 在.NET中使用十进制或十六进制,c#,.net,decimal,hex,numerics,C#,.net,Decimal,Hex,Numerics,早上好,下午好,晚上好 预先警告:我知道这听起来像是我在尝试进行过早的优化,但我向您保证我不是。也就是说,请回答这个问题,如果你想尽你最大的能力,而不是指向我有关“过早优化”的链接 使用以10为基数和以16为基数编写的常量进行大量重复操作时,是否可能注意到性能上的任何差异?我看到人们在写作 int b = a >> 0x1f; 很多而不是 int b = a >> 31; 这意味着要么他们来自C/C++背景,要么他们可能认为操作执行得更快(我并不仅仅是指按位操作)。C

早上好,下午好,晚上好

预先警告:我知道这听起来像是我在尝试进行过早的优化,但我向您保证我不是。也就是说,请回答这个问题,如果你想尽你最大的能力,而不是指向我有关“过早优化”的链接

使用以10为基数和以16为基数编写的常量进行大量重复操作时,是否可能注意到性能上的任何差异?我看到人们在写作

int b = a >> 0x1f;
很多而不是

int b = a >> 31;
这意味着要么他们来自C/C++背景,要么他们可能认为操作执行得更快(我并不仅仅是指按位操作)。C#编译器不是将所有常量转换为同一个基数吗?或者在编写代码时使用base 16比使用base 10有什么优势


非常感谢,

这不会有什么区别,因为它们将被编译成相同的内容

它确实使二进制操作的代码更具可读性,因为使用十六进制可以更容易地读取位。从十进制到二进制的转换在思想上要困难得多

0x1f将是:

1->0001

+

f->1111


=0001111

这不会有什么区别,因为它们将被编译成相同的内容

它确实使二进制操作的代码更具可读性,因为使用十六进制可以更容易地读取位。从十进制到二进制的转换在思想上要困难得多

0x1f将是:

1->0001

+

f->1111


=0001111这两条语句与编译器相同。这只是用户偏好的问题。

这两条语句与编译器相同。这只是用户偏好的问题。

唯一的优点是,对于习惯使用十六进制的人来说,它更容易阅读。整数是一个整数,无论是用十进制文字还是十六进制文字表示。

唯一的优点是,对于习惯使用十六进制的人来说,它更容易阅读。整数是整数,无论是用十进制文字还是十六进制文字表示。

我看到的唯一优点是,按位操作通常在十六进制中更有意义。然而,移位运算并没有(在我看来)。

我看到的唯一优势是,按位运算通常在十六进制中更有意义。然而,shift op(在我看来)并非如此。

在IL中,它们确实被解释为完全相同的东西,而对于大多数人来说,第一个更难阅读。因此,十六进制方法没有多大优势。

它们在IL中确实被解释为完全相同的东西,第一种方法对大多数人来说更难理解。所以十六进制方法没有什么好处。

数字就是一个数字,十进制或十六进制只是一种表示法,用一种人类可以阅读的方式将数字写在屏幕上。因此,在c/c++中也没有任何区别。

数字是数字,十进制或十六进制只是一种表示,用于以人类可以读取的方式在屏幕上写入数字。因此,在c/c++中也没有任何区别