That code (i8 := 0xFF) should not be accepted, though n8 := 0xFF should. If you want to deal with bit patterns, isn't that what naturals are for? Note also that "the bit pattern of the integer" is not well-defined anyway, since there are several possible representations of an integer (ones complement, twos complement, sign magnitude). See for example http://nssdc.gsfc.nasa.gov/nssdc/formats/IntegerNumbers.htm If your code is really dealing with integers and you specify 0xFF and it is interpreted as a bit pattern, then you won't get the value you expect on a ones-complement machine. Unless you mean that the compiler is interpreting 0xFF as a bit pattern in two's complement notation, in which case you would get the expected value of -1. But again, I think having the semantics of a constant depend on context is a very bad idea. Anyway, I'll let the ECMA committee sort this out.