Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Bitwise operation
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
===Circular shift=== {{further|Circular shift}} {{anchor|bit rotation}} <!-- Courtesy note per [[WP:RSECT]]: [[Bit rotation]] and [[Bitwise rotation]] link here --> Another form of shift is the ''circular shift'', ''bitwise rotation'' or ''bit rotation''. ====Rotate==== <!--images placed next to each other as text is currently so short--> {| style="float:right;" border="0" cellpadding="0" cellspacing="0" |- | [[File:Rotate left.svg|thumb|150px|Left circular shift or rotate]] | [[File:Rotate right.svg|thumb|150px|Right circular shift or rotate]] |} In this operation, sometimes called ''rotate no carry'', the bits are "rotated" as if the left and right ends of the register were joined. The value that is shifted into the right during a left-shift is whatever value was shifted out on the left, and vice versa for a right-shift operation. This is useful if it is necessary to retain all the existing bits, and is frequently used in digital [[cryptography]].{{Clarification needed|reason=In what process in cryptography is it used?|date=August 2020}} {{Clear}} ====Rotate through carry==== <!--images placed next to each other as text is currently so short--> {| style="float:right;" border="0" cellpadding="0" cellspacing="0" |- |[[File:Rotate left through carry.svg|thumb|150px|Left rotate through carry]] |[[File:Rotate right through carry.svg|thumb|150px|Right rotate through carry]] |} ''Rotate through carry'' is a variant of the rotate operation, where the bit that is shifted in (on either end) is the old value of the carry flag, and the bit that is shifted out (on the other end) becomes the new value of the carry flag. A single ''rotate through carry'' can simulate a logical or arithmetic shift of one position by setting up the carry flag beforehand. For example, if the carry flag contains 0, then <code>x RIGHT-ROTATE-THROUGH-CARRY-BY-ONE</code> is a logical right-shift, and if the carry flag contains a copy of the sign bit, then <code>x RIGHT-ROTATE-THROUGH-CARRY-BY-ONE</code> is an arithmetic right-shift. For this reason, some microcontrollers such as low end [[PIC microcontroller|PIC]]s just have ''rotate'' and ''rotate through carry'', and don't bother with arithmetic or logical shift instructions. Rotate through carry is especially useful when performing shifts on numbers larger than the processor's native [[word size]], because if a large number is stored in two registers, the bit that is shifted off one end of the first register must come in at the other end of the second. With rotate-through-carry, that bit is "saved" in the carry flag during the first shift, ready to shift in during the second shift without any extra preparation. {{Clear}}
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)