bitworks/hwo.bitworks/ShiftLeft.cs

36 lines
822 B
C#
Raw Normal View History

2017-06-14 11:25:16 +02:00
using System;
namespace hwo.bitworks
{
public class ShiftLeft : MultipleBitsSource
{
int n;
public ShiftLeft(LogicBase[] sources,int n)
:base(sources)
{
this.n = n;
}
public override bool bitValue(int bit)
{
if (bit < this.n){
return false;
} else if (bit < getBits()){
return sources[bit - this.n].value();
}
throw new IndexOutOfRangeException(String.Format("ShiftLeft 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 < this.n){
return Constants.ZERO.identity();
} else if (bit < getBits()){
return sources[bit - this.n].identity();
}
throw new IndexOutOfRangeException(String.Format("ShiftLeft supplies {0} bits, but bit #{1} requested",getBits(),bit));
}
2017-06-14 11:25:16 +02:00
}
}