本文整理汇总了C#中Microsoft.Scripting.Math.BigInteger.GetBits方法的典型用法代码示例。如果您正苦于以下问题:C# BigInteger.GetBits方法的具体用法?C# BigInteger.GetBits怎么用?C# BigInteger.GetBits使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Microsoft.Scripting.Math.BigInteger
的用法示例。
在下文中一共展示了BigInteger.GetBits方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: BigIntegerConstant
private static Expression BigIntegerConstant(BigInteger value) {
int ival;
if (value.AsInt32(out ival)) {
return Expression.Call(
typeof(BigInteger).GetMethod("Create", new Type[] { typeof(int) }),
Expression.Constant(ival)
);
}
long lval;
if (value.AsInt64(out lval)) {
return Expression.Call(
typeof(BigInteger).GetMethod("Create", new Type[] { typeof(long) }),
Expression.Constant(lval)
);
}
return Expression.New(
typeof(BigInteger).GetConstructor(new Type[] { typeof(int), typeof(uint[]) }),
Expression.Constant((int)value.Sign),
CreateUIntArray(value.GetBits())
);
}
示例2: Size
public static int Size(BigInteger/*!*/ self) {
//TODO: Should we expose the number of bytes per word in a BitInteger?
return self.GetBits().Length * 4;
}
示例3: WriteBignumValue
private void WriteBignumValue(BigInteger/*!*/ value) {
char sign;
if (value.Sign > 0) {
sign = '+';
} else if (value.Sign < 0) {
sign = '-';
} else {
sign = '0';
}
_writer.Write((byte)sign);
uint[] bits = value.GetBits();
int n = bits.Length * 2, mn = bits.Length - 1;
bool truncate = false;
if (bits.Length > 0 && (bits[mn] >> 16) == 0) {
n--;
truncate = true;
}
WriteInt32(n);
for (int i = 0; i < bits.Length; i++) {
if (truncate && i == mn) {
_writer.Write(unchecked((ushort)(bits[i])));
} else {
_writer.Write(bits[i]);
}
}
}