### 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 ); long swap( long flags, EncodedDoubleValue otherEncoder );  }### 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); }