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