the calculator home page

Base-n, hex, octal and binary modes

For calculations involving binary, octal or hexadecimal arithmetic, special modes are used. The calculator is shown in hexadecimal mode. These modes support integer arithmetic only. You can quickly change between number bases using the last row of buttons on the function keypad.

The current number base is indicated within the display area.

Two's complement representation

By default, signed numbers are displayed in exactly the same way as in decimal mode, with a minus sign. In computing and logic design it is more common to work with two's complement numbers. To enable two's complement number display use the Option/Display dialog.

The two's complement drop-down list allows you to select the word length. Once this is selected, values will be truncated to the selected number of bits for display, with leading zeroes added.

The two's complement setting only affects the displayed value. For example, if you keep adding positive values until the value "rolls over", the actual accumulated positive number will be stored internally, although the display will show the truncated value. However, if you switch to decimal mode, or disable two's complement, you will see a large positive number, rather than a smaller negative one. For example, if an 8-bit word length is selected and the decimal number -2 is entered, the value FE will be shown when you convert to hexadecimal. If a decimal of 254 is entered and converted to hexadecimal this will also show FE, but internally this is a different number. The two's complement fixed word length gives you an 8-bit "window" onto the underlying value.

Entering values in various number bases

In octal and binary mode some of the buttons are disabled. The button layout for binary mode is shown below, with two's complement and 16-bit word length:

For base-n numbers you need to set the number base in Options/General. This can be any number base between 2 and 36, and the digits are represented in the range 0-Z. Once the number base is set, it will be remembered whenever Base-n is selected. Setting the number base to ten is useful if you need to use some of the number base or bit-wise functions while working with decimal integers.

For number bases up to 16 (hexadecimal) the 0-9 and A-F buttons gradually become available as required. Beyond this you need to use the keyboard to input digits. The keyboard shortcuts for digits are the capital letters.

Base 36 Example

Using Options/Mode, select mode Base-n and set the number base to 22 (you could also set it to a higher number).
Clear the calculator and use the buttons to enter C A :


Now use the keyboard to enter L (remembering to use the keyboard shift key).


Using the buttons again, enter C 9 5 :


Now do some arithmetic in the normal way, e.g. + 3 = :


Logical operators

Logical AND, OR, XOR and XNOR operators are available. They take two operands. There are also unary operators to negate and a NOT operator.

Bit-wise shift operators

Pressing the shift button converts the shift left button << into right shift >> . The shift operator takes two operands - the number to be shifted and the number of bits to be shifted by. It is sometimes inconvenient to specify the number of shift bits in the same number system as the number to be shifted, and you can change number mode during the course of the calculation without affecting the result.

Right shifting by a negative number is equivalent to left shifting and vice versa.

IP Address Mode

In IP Address mode, a 32-bit number is represented in a byte-wise notation where each byte is shown as a decimal number separated by periods. The numbers for each byte can range from 0 to 255, except in Hollywood films where impossibly large byte numbers can be seen (e.g. 23.75.345.200 in the film "The Net"!). So a typical IP address would be (the IP address of current at the time of writing). This number could also be represented as a hexadecimal four byte number: D58F0F30. It is easy to do such conversions by switching between IP Address mode and Hexadecimal mode.

Representing the numbers in this way is a convenience because different parts of the address have special meaning depending on the "class" of address. The classes are defined as class A, class B or class C depending on which part of the address is used to define the network address. With the exception of very large organisations and ISPs (Internet Service Providers) most networks use class C addresses where the network address is defined by the first three bytes and the last byte is assigned to each computer as required. The subnet mask is therefore Class A, B and C subnet masks can be called up using the A , B and C buttons. To obtain the network address for a class C address, for example, you would enter the address and then AND it with the class C mask: AND C Result: