100 likes | 229 Vues
This document explores iterative integer division techniques, focusing on the SHR-Divisor Method and radix division processes. The SHR-Divisor Method allows for efficient subtraction and alignment of dividends and divisors, ensuring accurate results. It details how binary division simplifies the process, using either 0 or 1 as quotient bits based on comparisons between partial remainders and divisors. Additionally, strategies for handling divisors with leading zeros are covered, ensuring adherence to digital hardware practices. This comprehensive overview is ideal for understanding advanced integer division algorithms.
E N D
Iterative Integer Division Techniques Shantanu Dutt UIC
088 = Q V = 4 353 = D - 0 353 - 32 033 - 32 001 = R Division – Basics • SHR-Divisor Method: Start subtraction of V from left most position of D, considering as many digits of D as there are in the V (ignoring leading 0’s). After subtraction, consider the next lower digit of D (i.e., in the “partial remainder”), and align D*(current Q digit) so that LS digits align, and subtract from the PR from that digit to its MS non-0 digit. This is almost equivalent to a SHR V for next subtraction every iteration. • Radix r division is essentially a trial-and-error process, in which the next quotient bit is chosen from 0, …, r-1 • Binary division is much simpler, since the next quotient bit is either a 0 • or 1 depending on whether the partial remainder is less than or greater • than/equal to the divisor, respectively • Integer division: Given 2 integers D the dividend and V the divisor, we • want to obtain an integer quotient Q and an integer remainder R, s.t. • D = V.Q + R, R < V • Integer–FP division: Given 2 integers D the dividend and V the divisor, we • want to obtain a floating-point (FP) or real quotient s.t. • D ~ V.Q
088 = Q V = 4 353 = D - 0 353 - 32 033 SHL: 330 - 32 01 = R Division – SHL-Partial-Remainder Method 0111 = Q • Instead of shifting the divisor right by 1 bit, the partial remainder can be shifted left by one bit (in non-binary case, if the current Q bit is non-zero) V = 100 011101 = D - 000 011101 011101 SHL: - 100 01101 01101 SHL: - 100 0101 SHL: 0101 - 100 001 = R • If D is n bits and V is k bits (ignoring leading 0’s), perform n-k+1 iterations of the SHL & subtract process
0111 = Q V = 100000 011101000 = D - 000000 011101000 011101000 SHL: - 100000 01101000 01101000 SHL: - 100000 0101000 SHL: 0101000 - 100000 001000 = R’ Division – Handling V with leading 0’s • Some higher order bits of an n-bit V are 0’s • One of the main requisites of correct division by repeated subtraction is that the portion of D (in general the partial remainder) from which V is being subtracted be < 2.V, since the Q bit can only be 0 or 1 • Note that for 6-bit division (n=6), V is stored as a 6-bit # (000100) in the computer. The type of manual adjustment done in the above example of converting 6-bit subtractions into 4-bit ones (in general, n-bit subtractions into k-bit ones, k < n, k is the most significant 1’s position in V) is impractical in digital hardware (though a complex circuit may be designable to do variable-bit division) • Method 1: • Shift V to the left by n-k-1 bits (until its MSB=1), and perform the div. for n-k steps (equivalently D is considered a n+n-k-1 = 2n-k-1 bit #) • Divide remainder R’ of this process by 2n-k-1 (SHR by n-k-1 bits) to get final remainder R
Division – Handling V with leading 0’s 000111 = Q • Method 2: Augment D to the left by n-1 0’s, making D a (2n-1)-bit #, while V remains an n-bit #. Perform the division for n iterations • Note that this ensures that at least in iteration 1: • The MS n bits of D < 2V. It can be proved that this will be true at the beginning of every iteration, i.e., after subtraction and SHL of the previous iteration V = 000100 00000011101 = D - 000000 00000011101 00000011101 SHL: - 000000 • This is the type of division algorithm used in a computer/digital-hardware 0000011101 0000011101 SHL: - 000000 000011101 SHL: 000011101 - 000100 00001101 SHL: 00001101 - 000100 00000101 SHL: 0000101 - 000100 000001 = R
16 16 16 16 16 and also n-bit n’th n-bit