私はより具体的には、負でない整数からMSB(最上位ビット)を取得するための次のコードを持っているInt32
:再び.NET - int32プラットフォームのMSBは不可能ですか?
private static readonly int[] powersOf2 = new int[]
{
1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384,
32768, 65536, 131072, 262144, 524288, 1048576, 2097152, 4194304,
8388608, 16777216, 33554432, 67108864, 134217728, 268435456, 536870912,
1073741824
};
public static int GetMsb(int value)
{
for (int k = powersOf2.Length - 1; k >= 0; k--)
{
var bit = (value & powersOf2[k]) != 0;
if (bit)
return (k + 1);
}
return 0;
}
:値が負でないことを考えます。
私の質問は次のとおりです。
このフレームワークは、このコードがすべてのプラットフォーム(x86/Windows/Linux/Sun/64bit)で適切に動作することを保証しますか?
エンディアンとビット/バイトオーダー、プラットフォームに依存しない.NET内でのInt32
の表現ですか?
ありがとうございます!
こちらが重複している場合は、できるだけ早くコメントしてください。ありがとう!
ベース-2番号システムに関する具体的な何もプラットフォームがあります。ここのすべてのビットのために働く、私は信じている、とあらゆる事前に計算値を必要としないコードがあります。 – kenny