##### BASES

CalcTastic can display everything in one of four bases: **binary**, **octal**, **decimal** or **hexadecimal**. You can switch bases at any time by pressing (and holding) the buttons:

BIN, OCT, DEC or HEX

The current base is always highlighted on the keyboard, like so:

DEC

All screens and dialog windows in the programmer mode will print values in the current base. Here is an example of a calculation performed in decimal:

1 + 2 × 3 = 7

and then how it would look if you switched to binary:

1 + 10 × 11 = 111

##### INTEGER SIZES

CalcTastic can perform calculations in one of **eight** different integer-sizes (or word-sizes). There are four signed sizes:

S08, S16, S32, S64

and four un-signed sizes:

U08, U16, U32, U64

Press and hold the corresponding button for the size you want to switch to. The currently selected integer-size will always be highlighted on the keyboard:

S64

You can type in a number in one size and cast it to another size, just like you would in many programming languages (ie Java, C++). Here we’ll replicate casting a Java **Integer** to a **Short** (in DECIMAL). First, enter the number in the starting base. A Java **Integer** is a 32-bit signed integer:

S32451,800,364

Then switch to the new size and you’ll see the value in the new size. A Java **Short** is a 16-bit signed integer:

S16-4,820

The **current calculation**, all **values on the stack** and the **M-position** memory register all live in the current integer size. Every calculation in your history will be saved with the integer-size that it was performed in. Here’s some examples you may see in the history (in HEX):

S16: 1 + 2 × 3 = 7

U64: FF | (25 x 14) << 13 = 1720 00FF

##### BINARY BIT DISPLAY

In programmer mode, you can toggle the **binary bit-display** at any time by pressing the Bits button. With the bit-display open, you can press any half-byte nibble, which will open an expanded view of those bits, allowing you to toggle them as well. This allows you to enter or modify numbers with ease. Below is a screenshot:

##### OTHER FUNCTIONS

The rest of the functions in the programmer-mode are fairly easy to use, so my goal here is to simply give an example (or two) of each. These examples will all be done using **signed 64-bit** integers and in **hexadecimal**. Press and hold S64 followed by Hex to set this up and CLR before each example:

What is 789 AND CBC?

789AndCBC=S64: 488

What is 789 OR CBC?

789OrCBC=S64: FBD

What is 789 XOR CBC?

789XorCBC=S64: B35

What is 3A745 << 2?

3A745<<<<S64: E 9D14

or…

3A745Lsh2=S64: E 9D14

What is 3A745 >> 2?

3A745>>>>S64: E9D1

or…

3A745Rsh2=S64: E9D1

What is the 1’s complement of 77?

1’s77=S64: FFFF FFFF FFFF FF88

What is the 2’s complement of 77?

2’s77=S64: FFFF FFFF FFFF FF89

What is 3 & ~3?

3AndNot3=S64: 0

How do I flip the bytes in AABB CCDD?

F8AABBCCDD=S64: DDCC BBAA 0000 0000

How do I flip the words in AABB CCDD?

F16AABBCCDD=S64: CCDD AABB 0000 0000

What is 285A mod 34?

285AMod34=S64: 22

How can I get a random integer?

Rdm

##### ORDER OF OPERATIONS

If you omit parenthesis, here is the order of operations for the Programmer Mode. Anything on the same line has equal priority as other items on that line, anything below has lower priority, and anything above has higher priority:

8 – y^{x}

7 – × ÷

6 – + −

5 – Mod

4 – Lsh Rsh

3 – And

2 – Xor

1 – Or