Code: Alles auswählen
var
i: PtrUInt = 1;
begin
WriteLn(i); // 1
WriteLn(i shr 32); // 0
WriteLn(i shr 64); // 1
WriteLn(i shr 128); // 1
WriteLn(i shr 192); // 1
WriteLn(i shr 256); // 1
WriteLn(i shr 512); // 1
WriteLn(i shr 100); // 0
WriteLn(i shr 333); // 0
end.
Was dabei auch noch komisch ist, shr 364 und 300 geben das gleiche Resultat, aber dies könnte daran liegen, das ein die vorderen Bits abgeschnitten werden, aber nach meiner Meinung, müsste da "0" kommen, wen mal alles vom Stapel runtergerutscht ist.
Mit shl, ist das ganze Verhalten Ähnlich.
Ist dies ein Bug, oder ist dies so gewollt ?