Java Primitive Data Types -Integers

Each Java data type for representing integers is signed: left most bit 0 means positive, left most bit 1 means negative. The following table describes the integer data types:

 Primitive data type Memory allocation (word size) Min / Max value -2n-1 to +2n-1 - 1, n = #bits byte 1 byte -128 / 127 short 2 bytes -32,768 / 32,767 int 4 bytes -2,147,483,648 / 2,147,483,647 long 8 bytes -9,223,372,036,854,775,808 / 9,223,372,036,854,775,807

Two's complement is the standard convention used to represent signed binary integer data types in many programming languages including Java. This avoids having +0 and -0 values, which could complicate hardware requirements. To represent a number in two's complement first the word size must be determined so the position of the left most bit is known, next note that all positive numbers have a 0 as the left most bit. Inverting all bits in the positive number and adding 1 derives a negative number. To read a negative number reapply the same algorithm to get the positive value and insert the negative sign. A shortcut for applying two's complement: copy all the bits from the least significant (rightmost) bit up to and including the first 1, then invert the rest. See Complements in Radix r for information on how to apply this technique for radix other than 2. Consider the table below which shows the binary representation of Java byte data type (spaces added to binary numbers to improve readability):

Java Byte Data Type

Decimal

8 bit Binary

invert

add 1 for
Twos Complement

Decimal

0

0000 0000

-

-

-

+1

0000 0001

1111 1110

1111 1111

-1

+2

0000 0010

1111 1101

1111 1110

-2

+3

0000 0011

1111 1100

1111 1101

-3

+4

0000 0100

1111 1011

1111 1100

-4

+5

0000 0101

1111 1010

1111 1011

-5

¯

¯

124

0111 1100

1000 0011

1000 0100

-124

125

0111 1101

1000 0010

1000 0011

-125

126

0111 1110

1000 0001

1000 0010

-126

127

0111 1111

1000 0000

1000 0001

-127

-

-

-

1000 0000

-128

 Complements in Radix r Euclid's Division Algorithm Base Conversion Two's Complement checker Java Primitive Data Types: Reals Number Systems Homework

by J. A. Tompkins tompkinsj@uncw.edu