MrSpoocy: Bit Shift Left macht Probleme.

Beitrag lesen

Hi,

hier ein kleiner Pseudocode...

my $ts = 77;  
my $right = $ts >> 4;  
my $left = $ts << 4;  
my $result = $right | $left;  
  
print "D: ".sprintf("%08b", $ts)."\n\n";  
print "R: ".sprintf("%08b", $right)."\n";  
print "L: ".sprintf("%08b", $left)."\n";  
print "-" x 11 . "\n";  
print "#: ".sprintf("%08b", $result)."\n\n";

Folgende Ausgabe habe ich erwartet:

/*  
D: 01001101  
  
R: 00000100  
L: 11010000  
-----------  
#: 11010100  
*/

leider habe ich aber folgendes bekommen:

/*  
D: 01001101  
  
R: 00000100  
L: 10011010000  
-----------  
#: 10011010100  
*/

Beim Links shiften füllt er zwar wie gewollt von rechts mit 0 auf, jedoch erweitert er den String einfach. Ich könnte den jetzt sicher mit substr abschneiden, kann mir aber nicht vorstellen das das richtig ist was bei mir pasiert. Weiß jemand was falsch ist und wie ich es behebe ?

mfg Spoocy