C 7654 3210
1110 1111 = 0xEF = decimal 239
1 1101 1110 left shift one showing carry
1101 1110 result without carry = 0xDE = 222
####
#!/usr/bin/perl -w
use strict;
my $input = 0xEF;
my $andMask = (2**(MSbit($input)+1))-1;
printf ("%X\n", ($input<<1) & $andMask);
## prints DE
sub MSbit ##returns power of 2 of MS bit
{
my $num = shift;
my $bit =-1;
while ($num != 0)
{
$num = $num >> 1;
$bit++;
}
return $bit;
}
####
#!/usr/bin/perl -w
use strict;
my $input = 0xEF; #this is 239 in decimal
my $mask = 0xFF;
printf ("%X\n", $input<<1 & $mask);
# prints DE which means 222 in decimal
####
printf ("%X\n", 0xEF<<1 & 0xFF);
# prints DE which means 222 in decimal