␡
- 2-1 Manipulating Rightmost Bits
- 2-2 Addition Combined with Logical Operations
- 2-3 Inequalities among Logical and Arithmetic Expressions
- 2-4 Absolute Value Function
- 2-5 Average of Two Integers
- 2-6 Sign Extension
- 2-7 Shift Right Signed from Unsigned
- 2-8 Sign Function
- 2-9 Three-Valued Compare Function
- 2-10 Transfer of Sign Function
- 2-11 Decoding a "Zero Means 2 **n" Field
- 2-12 Comparison Predicates
- 2-13 Overflow Detection
- 2-14 Condition Code Result of Add, Subtract, and Multiply
- 2-15 Rotate Shifts
- 2-16 Double-Length Add/Subtract
- 2-17 Double-Length Shifts
- 2-18 Multibyte Add, Subtract, Absolute Value
- 2-19 Doz, Max, Min
- 2-20 Exchanging Registers
- 2-21 Alternating among Two or More Values
- 2-22 A Boolean Decomposition Formula
- 2-23 Implementing Instructions for All 16 Binary Boolean Operations
This chapter is from the book
2–8 Sign Function
The sign, or signum, function is defined by
![020equ03.jpg](/content/images/chap2_9780321842688/elementLinks/020equ03.jpg)
It can be calculated with four instructions on most machines [Hop]:
![021equ01.jpg](/content/images/chap2_9780321842688/elementLinks/021equ01.jpg)
If you don’t have shift right signed, then use the substitute noted at the end of Section 2–7, giving the following nicely symmetric formula (five instructions):
![021equ02.jpg](/content/images/chap2_9780321842688/elementLinks/021equ02.jpg)
Comparison predicate instructions permit a three-instruction solution, with either
Finally, we note that the formula almost works; it fails only for x = –231.