background image

Vol. 1 4-3

DATA TYPES

4.2.1 Integers

The Intel 64 and IA-32 architectures define two types of integers: unsigned and signed. Unsigned integers are ordi-
nary binary values ranging from 0 to the maximum positive number that can be encoded in the selected operand 
size. Signed integers are two’s complement binary values that can be used to represent both positive and negative 
integer values.
Some integer instructions (such as the ADD, SUB, PADDB, and PSUBB instructions) operate on either unsigned or 
signed integer operands. Other integer instructions (such as IMUL, MUL, IDIV, DIV, FIADD, and FISUB) operate on 
only one integer type.
The following sections describe the encodings and ranges of the two types of integers.

4.2.1.1  

Unsigned Integers

Unsigned integers are unsigned binary numbers contained in a byte, word, doubleword, and quadword. Their 
values range from 0 to 255 for an unsigned byte integer, from 0 to 65,535 for an unsigned word integer, from 0 

Figure 4-3.  Numeric Data Types

0

0

0

22

0

Double Extended Precision

63 62

0

Word Signed Integer

0

Byte Signed Integer

7 6

Sign

Sign

Doubleword Signed Integer

15 14

Sign

31 30

Sign

Quadword Signed Integer

0

0

Word Unsigned Integer

0

Byte Unsigned Integer

7

Doubleword Unsigned Integer

15

31

Quadword Unsigned Integer

63

0

0

23

30

31

51

52

62

63

64 63 62 

79 78

Floating Point

Single Precision

Floating Point

Double Precision

Floating Point

Sign

Integer Bit

Sign

Sign

0

9

14

15

Half Precision

Floating Point

Sign