1

おはよう、昼も夜も、

警告:時期尚早の最適化を試みているように聞こえるかもしれませんが、そうではないことを保証します。つまり、「時期尚早の最適化」に関するリンクを私に指摘せずに、できる限りのことをしたい場合は、この質問に答えてください。

基数 10 と基数 16 で記述された定数を使用して大量に繰り返される操作のパフォーマンスに違いがあることに気付くことは可能ですか? 私は人々が書いているのを見ます

int b = a >> 0x1f;

代わりにたくさん

int b = a >> 31;

これは、彼らがC/C++のバックグラウンドを持っているか、操作がより高速に実行されると考えている可能性があることを示唆しています(ビット単位の操作だけについて話しているわけではありません)。C# コンパイラによって、すべての定数が同じ基数に変換されるわけではありませんか? または、コードを書くときに base 10 よりも base 16 を使用する利点はありますか?

どうもありがとうございました、

4

6 に答える 6

4

それらは同じものにコンパイルされるため、違いはありません。

16 進数を使用するとビットが読みやすくなるため、バイナリ演算のコードが読みやすくなります。10 進数から 2 進数への変換は、精神的に非常に困難です。

0x1f は次のようになります。

1 -> 0001

+

f -> 1111

= 00011111

于 2011-03-14T14:49:17.467 に答える
1

これらの 2 つのステートメントは、コンパイラと同じです。それは単にユーザーの好みの問題です。

于 2011-03-14T14:49:49.510 に答える
0

私が見る唯一の利点は、ビット単位の演算は通常、16進数でより意味があることです。ただし、シフト操作はそうではありません(私の意見では)。

于 2011-03-14T14:51:05.900 に答える
0

それらは実際にILでまったく同じものとして解釈され、最初のものはほとんどの人にとって読みにくいものです。したがって、16進法にはあまり利点がありません。

于 2011-03-14T14:51:09.100 に答える
0

数字は数字であり、10進数または16進数は、人間が読み取れる方法で画面に数字を書き込むための単なる表現です。したがって、c / c ++でも、まったく違いはありません。

于 2011-03-14T14:51:36.777 に答える
0

唯一の利点は、16 進数での作業に慣れている人にとって読みやすいことです。整数は、10 進リテラルまたは 16 進リテラルで表されるかどうかに関係なく、整数です。

于 2011-03-14T14:50:13.997 に答える