using System; namespace hwo.bitworks { public class ShiftRight : MultipleBitsSource { int n; public ShiftRight(LogicBase[] sources,int n) :base(sources) { this.n = n; } public override bool bitValue(int bit) { if (bit < (getBits()-this.n)){ return sources[bit + this.n].value(); } else if (bit < getBits()){ return false; }; throw new IndexOutOfRangeException(String.Format("ShiftRight supplies {0} bits, but bit #{1} requested",getBits(),bit)); } public override identity.BitIdentity getBitIdentity(int bit) { if (bit < (getBits()-this.n)){ return sources[bit + this.n].identity(); } else if (bit < getBits()){ return Constants.ZERO.identity(); }; throw new IndexOutOfRangeException(String.Format("ShiftLeft supplies {0} bits, but bit #{1} requested",getBits(),bit)); } } }