bitworks/hwo.bitworks/ShiftRight.cs

36 lines
851 B
C#

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