Пример #1
0
        /// <summary>
        /// 指数部を設定
        /// </summary>
        public static Original SetExponentBits(this Original value, int exponent)
        {
            var bits = (ulong)BitConverter.DoubleToInt64Bits(value);

            bits &= 0x800F_FFFF_FFFF_FFFF;
            bits |= (ulong)exponent << 52;
            return(BitConverter.Int64BitsToDouble((long)bits));
        }
Пример #2
0
        /// <summary>
        /// 仮数部を設定
        /// </summary>
        public static Original SetFractionBits(this Original value, ulong fraction)
        {
            var bits = (ulong)BitConverter.DoubleToInt64Bits(value);

            bits &= 0xFFF0_0000_0000_0000;
            bits |= fraction;
            return(BitConverter.Int64BitsToDouble((long)bits));
        }
Пример #3
0
        /// <summary>
        /// 符号ビットを設定
        /// </summary>
        public static Original SetSignBits(this Original value, int sign)
        {
            var bits = (ulong)BitConverter.DoubleToInt64Bits(value);

            bits &= 0x7FFF_FFFF_FFFF_FFFF;
            bits |= (ulong)sign << 63;
            return(BitConverter.Int64BitsToDouble((long)bits));
        }
Пример #4
0
 /// <summary>
 /// 仮数部を取得
 /// </summary>
 public static ulong GetFractionBits(this Original value)
 {
     return((ulong)BitConverter.DoubleToInt64Bits(value) & 0x000FFFFFFFFFFFFF);
 }
Пример #5
0
 /// <summary>
 /// 指数部を取得
 /// </summary>
 public static ushort GetExponentBits(this Original value)
 {
     return((ushort)(((ulong)BitConverter.DoubleToInt64Bits(value) >> 52) & 0x7FF));
 }
Пример #6
0
 /// <summary>
 /// 符号ビットを取得
 /// </summary>
 public static byte GetSignBits(this Original value)
 {
     return((byte)((ulong)BitConverter.DoubleToInt64Bits(value) >> 63));
 }
Пример #7
0
 /// <summary>
 /// 指定した数値が負または正の無限大と評価されるかどうかを示す値を返します。
 /// </summary>
 public static bool IsInfinity(this Original value)
 {
     return(Original.IsInfinity(value));
 }