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];
}