C#にはC++のCHAR_BITに類似したものがありますか?C#では、C++のCHAR_BITに似ていますか?ファストアブス
更新:、不思議
private int Abs(int value)
{
int mask = value >> sizeof(int) * 8 - 1;
return ((value^mask) - mask);
}
:
// Compute the integer absolute value (abs) without branching
int v; // we want to find the absolute value of v
unsigned int r; // the result goes here
int const mask = v >> sizeof(int) * CHAR_BIT - 1;
r = (v^mask) - mask;
はここに私のC#バージョンである:基本的に
は、私がここにC++のバージョンがあり、分岐せずに腹筋を計算しようとしていますこれも動作します:
private int Abs(int value)
{
int mask = value >> sizeof(int) * sizeof(byte) - 1;
return ((value^mask) - mask);
}
私はそれを疑う。 'char'はユニコード文字を表すと理解されます。他のすべての組み込み型は、設定された数のビットを使用すると理解されます。それは変化しないので、この情報をどこにでも保存する必要はありません。 –
@JeffM:charは、C++またはC#でUnicode文字を表すことはできません(通常は)。 C#では、1つまたはそれ以下のユニコード文字にマップすることができるsinlge UTF-16 _code unit_のみを保持できます。 C++では 'char'は普通少なくとも8ビットですが、少なくとも21ビットでなければユニコード文字を保持できません。 –
@Charles:私はそれを十分に認識しています。私が作ろうとしてきたことは、C++の型のサイズは実装/アーキテクチャ間で変わるかもしれないということでした。 C#では、すべてが言語仕様で固定されており、使用されるビットを追跡することは不要です。 'CHAR_BIT'マクロに相当するC#の存在に関する質問に答えると、"私はそれを疑います。 " 'sizeof'演算子を使用して、ある型が占めるバイト数を調べ、そこからビット数を決定すれば十分です。 p.s.、unicode character、これはおそらく間違った言葉ですが、アイデアはそこにあります。 –