【发布时间】:2011-05-30 07:42:17
【问题描述】:
我有以下代码用于从非负整数 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;
}
再次:假设该值不是负数。
我的问题是:
.NET 框架是否保证此代码可以在每个平台上正确运行:x86/Windows/Linux/Sun/64bit?
.NET 中的Int32 表示形式(包括字节顺序和位/字节顺序)是否与平台无关?
提前致谢!
顺便说一句,如果这是一种重复 - 请尽快对此发表评论。谢谢!
【问题讨论】:
-
base-2 数字系统没有特定的平台。
标签: .net integer platform-agnostic