bitworks/hwo.bitworks/ShiftRight.cs

36 lines
851 B
C#
Raw Normal View History

2017-06-14 11:25:16 +02:00
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));
}
2017-06-14 15:06:37 +02:00
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));
}
2017-06-14 11:25:16 +02:00
}
}