### Question:
EncodedDoubleValue extends EncodedValue { public double getDoubleValue(long flags) { flags &= mask; flags >>>= shift; return flags * factor; } EncodedDoubleValue(String name, int shift, int bits, double factor, long defaultValue, int maxValue);  EncodedDoubleValue(String name, int shift, int bits, double factor, long defaultValue, int maxValue, boolean allowZero); @Override long setValue(long flags, long value); @Override long getValue(long flags); @Override long setDefaultValue(long flags); long setDoubleValue(long flags, double value); double getDoubleValue(long flags);  }### Answer:
@Test public void testUnsignedRightShift_issue417() { EncodedDoubleValue speedEncoder = new EncodedDoubleValue("Speed", 56, 8, 1, 30, 255); Long flags = -72057594037927936L; assertEquals(255, speedEncoder.getDoubleValue(flags), 0.01); }