I'm trying to build a simple assembler and have now managed to get everything working except something rather trivial... the correct output format... The format must be: Address followed by a space followed by Operand and Opcode. These must be two 32 bit values (as 8 hex characters). For the Operand/Opcode the first six bits are the Operand and the final two bits are the Opcode. EG: 00000001 0009D0A1 To generate this I am using: Code: printf ("%8.8X %6.6X%2.2X\n", printout, operand, opcode); Which is all fine and lovely until the operand is a negative value at which point it will promptly ignore any attempts at following the format and print out 8 characters such as: 00000001 FFFFFFFF00 Any idea as for how to fix this?