diff --git a/src/org/hwo/bitfields/Field.java b/src/org/hwo/bitfields/Field.java index 4995796..0760410 100644 --- a/src/org/hwo/bitfields/Field.java +++ b/src/org/hwo/bitfields/Field.java @@ -36,11 +36,19 @@ public class Field { public synchronized int getValue(int srcValue) { - return (srcValue >> start) & (-1 >> (Integer.SIZE - len)); + int mask = (-1 >>> (Integer.SIZE - len)); + int val = (srcValue >> start) & mask; + //System.err.println(String.format("BF: 0x%08x (%d:%d = 0x%08x) = 0x%08x",srcValue,start,len,mask,val)); + return val; } - public void setValue(int value) + public int setValue(int srcValue,int fieldValue) { + int mask = ((-1 >>> (Integer.SIZE - len))<