Sign extension
Encyclopedia
Sign extension is the operation, in computer
arithmetic
, of increasing the number of bit
s of a binary number while preserving the number's sign (positive/negative)
and value. This is done by appending digits to the most significant
side of the number, following a procedure dependent on the particular signed number representation used.
For example, if six bits are used to represent the number "
If ten bits are used to represent the value "
, and this is sign extended to sixteen bits, the new representation is "
In the Intel x86 instruction set
, for example, there are two ways of doing sign extension:
Computer
A computer is a programmable machine designed to sequentially and automatically carry out a sequence of arithmetic or logical operations. The particular sequence of operations can be changed readily, allowing the computer to solve more than one kind of problem...
arithmetic
Arithmetic
Arithmetic or arithmetics is the oldest and most elementary branch of mathematics, used by almost everyone, for tasks ranging from simple day-to-day counting to advanced science and business calculations. It involves the study of quantity, especially as the result of combining numbers...
, of increasing the number of bit
Bit
A bit is the basic unit of information in computing and telecommunications; it is the amount of information stored by a digital device or other physical system that exists in one of two possible distinct states...
s of a binary number while preserving the number's sign (positive/negative)
Sign (mathematics)
In mathematics, the word sign refers to the property of being positive or negative. Every nonzero real number is either positive or negative, and therefore has a sign. Zero itself is signless, although in some contexts it makes sense to consider a signed zero...
and value. This is done by appending digits to the most significant
Most significant bit
In computing, the most significant bit is the bit position in a binary number having the greatest value...
side of the number, following a procedure dependent on the particular signed number representation used.
For example, if six bits are used to represent the number "
00 1010
" (decimal positive 10) and the sign extend operation increases the word length to 16 bits, then the new representation is simply "0000 0000 0000 1010
". Thus, both the value and the fact that the value was positive are maintained.If ten bits are used to represent the value "
11 1111 0001
" (decimal negative 15) using two's complementTwo's complement
The two's complement of a binary number is defined as the value obtained by subtracting the number from a large power of two...
, and this is sign extended to sixteen bits, the new representation is "
1111 1111 1111 0001
". Thus, by padding the left side with ones, the negative sign and the value of the original number are maintained.In the Intel x86 instruction set
X86 instruction listings
The x86 instruction set has been extended several times, introducing wider registers and datatypes and/or new functionality.-x86 integer instructions:...
, for example, there are two ways of doing sign extension:
- using the instructions cbw, cwd, cwde, and cdq: convert byte to word, word to doubleword, word to extended doubleword, and doubleword quadword, respectively (in the x86 context a byte has 8 bits, a word 16 bits, a doubleword and extended doubleword 32 bits, and a quadword 64 bits);
- using one of the sign extended moves, accomplished by the movsx ("move with sign extension") family of instructions.