BitField.BitField.Concat C# (CSharp) Method

Concat() static public method

2つのビットフィールドを結合する。 verilog の {x, y, z} に相当。 いくつでもつなげられる。
static public Concat ( ) : BitField
return BitField
		static public BitField Concat(params BitField[] a)
		{
			ulong val = 0L;
			int width = 0;

			foreach(BitField bf in a)
			{
				width += bf.Width;
				val <<= bf.Width;
				val |= bf.Value;
			}
			return new BitFieldImmediate(width - 1, 0, val);
		}

Usage Example

コード例 #1
0
        /// <summary>
        /// Binary → BCD 変換
        /// </summary>
        /// <param name="bin">変換元</param>
        /// <param name="overflow">オーバーフローが起きたらtrueにセットされる。</param>
        /// <returns>変換結果</returns>
        public static BitField BinToBcd(BitField bin, out bool overflow)
        {
            BitField bcd = BitField.Concat(BitField.Create(30, 0, 0), bin);

            overflow = false;
            for (int i = 0; i < 30; ++i)
            {
                BitField a0      = BinToBcdAddIn(bcd[61, 58]);
                BitField a1      = BinToBcdAddIn(bcd[57, 54]);
                BitField a2      = BinToBcdAddIn(bcd[53, 50]);
                BitField a3      = BinToBcdAddIn(bcd[49, 46]);
                BitField a4      = BinToBcdAddIn(bcd[45, 42]);
                BitField a5      = BinToBcdAddIn(bcd[41, 38]);
                BitField a6      = BinToBcdAddIn(bcd[37, 34]);
                BitField a7      = BinToBcdAddIn(bcd[33, 30]);
                BitField add_in  = BitField.Concat(a0, a1, a2, a3, a4, a5, a6, a7);
                BitField add_out = bcd[61, 30] + add_in;


                bcd.Assign(BitField.Concat(add_out, bcd[29, 0], BitField.Create(0, 0, 0)));
                overflow |= add_out[add_out.Msb];
            }

            return(bcd[61, 30]);
        }
All Usage Examples Of BitField.BitField::Concat