6 as 8-bit unsigned = 00000110 = 6 as 8-bit 2's comp 226 as 8-bit unsigned = 11100010 = -30 as 8-bit 2's comp + -------- 232 as 8-bit unsigned = 11101000 = -24 as 8-bit 2's comp #### my $x = 0b11100010; # 226 $x = -( ( ~$x + 1 ) & 0xFF ) if $x & 0x80; -or- $x -= 0x100 if $x >= 0x80; -or- $x = unpack('c', pack('C', $x)); say $x; # -30