Difference between revisions of "Shr"
From Lazarus wiki
Jump to navigationJump to search (New page: '''Sh'''ift '''r'''ight (shr) performs a right bit-shift operation.) |
(Undo revision 146631 by Mozi (talk). This is a program, neither a function nor procedure. I'm sorry.) Tag: Undo |
||
(15 intermediate revisions by 12 users not shown) | |||
Line 1: | Line 1: | ||
− | '''Sh'''ift '''r'''ight (shr) performs a right bit-shift operation. | + | {{Shr}} |
+ | |||
+ | |||
+ | Back to [[Reserved words]]. | ||
+ | |||
+ | |||
+ | == Overview == | ||
+ | |||
+ | The reserved word '''Sh'''ift '''r'''ight (shr) performs a logical right bit-shift operation (opposite than [[Shl|shl]]). | ||
+ | |||
+ | Example: | ||
+ | |||
+ | Command is: 00000100 shr 2 (shift right 2 bits) | ||
+ | |||
+ | Action is: 00000100 -> 00 (00 gets added to the left of the value; right 00 "disappears") | ||
+ | |||
+ | Result is: 00000001 | ||
+ | |||
+ | == Shr with signed types == | ||
+ | Note: unlike the >> operator in the C language, the shr operator is a logical (not arithmetic) bit shift, even if the left operand is a signed integer. An implicit [[Typecast|typecast]] and extension to a larger unsigned type may be performed before the shift operation. Check what the following program actually prints. | ||
+ | |||
+ | <syntaxhighlight lang=pascal> | ||
+ | program ShrTest; | ||
+ | begin | ||
+ | WriteLn(ShortInt(-3) shr 1); | ||
+ | end. | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == Is a bit set == | ||
+ | |||
+ | <syntaxhighlight lang=pascal> | ||
+ | function isBitSet(AValue, ABitNumber:integer):boolean; | ||
+ | begin | ||
+ | result:=odd(AValue shr ABitNumber); | ||
+ | end; | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | {{Logical operators}} | ||
+ | * [[Const]] | ||
+ | * [[Function]] | ||
+ | * [[Integer]] |
Latest revision as of 05:30, 1 September 2021
│
Deutsch (de) │
English (en) │
français (fr) │
русский (ru) │
Back to Reserved words.
Overview
The reserved word Shift right (shr) performs a logical right bit-shift operation (opposite than shl).
Example:
Command is: 00000100 shr 2 (shift right 2 bits) Action is: 00000100 -> 00 (00 gets added to the left of the value; right 00 "disappears") Result is: 00000001
Shr with signed types
Note: unlike the >> operator in the C language, the shr operator is a logical (not arithmetic) bit shift, even if the left operand is a signed integer. An implicit typecast and extension to a larger unsigned type may be performed before the shift operation. Check what the following program actually prints.
program ShrTest;
begin
WriteLn(ShortInt(-3) shr 1);
end.
Is a bit set
function isBitSet(AValue, ABitNumber:integer):boolean;
begin
result:=odd(AValue shr ABitNumber);
end;
operators |
|
---|---|
see also |
|