the value -1 is type of int, so when you compare un1 <= -1, at this moment, the un1's type will implicitly convert to int. it' s equal to (int)un1 <= -1.
as un1 is ranged from 0x00 to 0xff, and it's unsigned , so (int)un1 is from 0x00000000 t0 0x000000ff(0 to 255), so un1 <= -1 will always be false.
if un1 you declared as char, the situation will be very different.
the padded bits will defend on the MSB of un1, for example:
if char un1 = 0xff,
then (int)un1 will be 0xffffffff(if un1 is unsigned, the result is 0x000000ff)
so i advise you to declare un1 as char(int is better)