BitField.SampleLogic.BcdToBin C# (CSharp) Méthode

BcdToBin() public static méthode

BCD → Binary 変換
public static BcdToBin ( BitField bcd ) : BitField
bcd BitField 変換元
Résultat BitField
		public static BitField BcdToBin(BitField bcd)
		{
			BitField bin = BitField.Concat(BitField.Create(0, 0, 0), bcd, BitField.Create(29, 0, 0));

			for(int i=0; i<30; ++i)
			{
				BitField a0 = BcdToBinAddIn(bin[62, 59]);
				BitField a1 = BcdToBinAddIn(bin[58, 55]);
				BitField a2 = BcdToBinAddIn(bin[54, 51]);
				BitField a3 = BcdToBinAddIn(bin[50, 47]);
				BitField a4 = BcdToBinAddIn(bin[46, 43]);
				BitField a5 = BcdToBinAddIn(bin[42, 39]);
				BitField a6 = BcdToBinAddIn(bin[38, 35]);
				BitField a7 = BcdToBinAddIn(bin[34, 31]);
				BitField add_in = BitField.Concat(a0, a1, a2, a3, a4, a5, a6, a7);
				BitField add_out = bin[62, 31] + add_in + BitField.Create(31, 0, 1);

				bin.Assign(BitField.Concat(BitField.Create(0, 0, 0), add_out, bin[30, 1]));
			}

			return bin[31, 0];
		}

Usage Example

Exemple #1
0
        /// <summary>
        /// BinToBcd および BcdToBin のチェック
        /// </summary>
        /// <param name="m">テスト入力値</param>
        static void TestBcd(ulong m)
        {
            BitField bin;

            bin = BitField.Create(31, 0, m);

            Console.Write("{0,15:d08} : ", bin.Value);
            bool     of;
            BitField bcd = SampleLogic.BinToBcd(bin, out of);

            Console.Write("{0,9:x08} : ", bcd.Value);
            BitField bin2 = SampleLogic.BcdToBin(bcd);

            Console.Write("{0,9:d08}", bin2.Value);
            if ((bin.Value % 100000000) != bin2.Value)
            {
                Console.Write(" **");
            }
            if (of)
            {
                Console.Write("  overflow");
            }
            Console.Write("\n");
        }