Bitwise, sar, shl, shr, shift operators
|
Smart pascal source code
var
i: Integer;
BEGIN
{ BASIC BITWISE OPERATIONS }
i := 0;
Writeln(IntToStr(i and 15)); // 0
Writeln(IntToStr(i or 15)); // 15
Writeln(IntToStr(i xor 15)); // 15
i := i or 4;
Writeln(IntToStr(i and 15)); // 4
Writeln(IntToStr(i or 15)); // 15
Writeln(IntToStr(i xor 15)); // 11
i := 255;
Writeln(IntToStr(i and not 7)); // 248
{ BITWISE SAR }
WriteLn(1 sar 0); // 1
WriteLn(1 sar 1); // 0
WriteLn(4 sar 1); // 2
WriteLn(-1 sar 0); // -1
WriteLn(-1 sar 1); // -1
WriteLn(-4 sar 1); // -2
i := 123456;
WriteLn(i sar 0); // 123456
WriteLn(i sar 2); // 30864
WriteLn(i sar 128); // 0
i := -123456;
WriteLn(i sar 0); // -123456
WriteLn(i sar 2); // -30864
WriteLn(i sar 128); // -1
{ BITWISE SHIFTS }
WriteLn(1 shl 1); // 2
WriteLn(2 shr 1); // 1
i := 1 shl 8;
WriteLn(i shr 2); // 64
WriteLn(i shl 2); // 1024
WriteLn(i shr 10); // 0
WriteLn(i shr 0); // 256
WriteLn(i shl 0); // 256
i:=1;
WriteLn(8 shr i); // 4
WriteLn(8 shl i); // 16