The shift() Command

We're glad you came by, but you might find what you're looking for elsewhere.

TI-Basic Developer is not the site it once was. While its information on commands and other calculator features remains almost second-to-none, its forum, archives, and even hosting service, Wikidot, have been decaying for years. The calculator community would love to see what you're working on, or help you in your next coding adventure, but TI-Basic Developer is no longer the place to do it.

Instead, you should head over to Cemetech (primarily American) or TI-Planet (primarily international). Both are active, well-established forums with their own archives, chatrooms, reference material, and abundant coding tools and resources. We'll see you there, we hope.

shift.png

Command Summary

Shifts the elements of a list, string, or binary integer.

Command Syntax

shift(object[,places])

Menu Location

  • Press 2nd MATH to enter the MATH popup menu.
  • Press E to enter the Base submenu.
  • Press B to select shift(.

Calculator Compatibility

This command works on all calculators.

Token Size

2 bytes.

When shift() is applied to lists or strings, it moves every element or character over, removing the elements that were shifted off the end, and filling in empty spaces with an undefined value: undef for lists and a space for strings. The default action is to shift everything one element right.

A second argument gives the direction and number of places to shift the list or string. Positive numbers are shifts to the left, and negative numbers are shifts to the right, so the default action shift(object) is equivalent to shift(object,-1). Here are some examples:

:shift({1,2,3,4,5})
           {undef  1  2  3  4}
:shift("Hello")
           " Hell"
:shift({1,2,3,4,5},2)
           {3  4  5  undef  undef}
:shift("TI-Basic",-3)
           "   TI-Ba"

shift() can also be used on integers, treating them as a sequence of bits (this makes the most sense when expressing them in binary). In this case, the integer is expressed as a 32-bit signed integer (larger integers are truncated), which is then bit-shifted.

When shifting right, the integer is sign extended: that is, the new bits introduced are 1 if the original leftmost bit was 1, and 0 if the original leftmost bit was 0. This preserves the sign of the integer. When shifting left, the integer is zero extended: the new bits are always 0.

As with lists and strings, the default action of shift() is to shift the integer one position right. A second argument gives the direction and number of places to shift the list or string. Positive numbers are shifts to the left, and negative numbers are shifts to the right.

:shift(0b00000000000000000000000011111111)▶Bin
           0b00000000000000000000000001111111
:shift(0b10000000000000000000000011111111)▶Bin
           0b11000000000000000000000001111111
:shift(1,10)
           1024

Related Commands

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-Noncommercial 2.5 License.