This code is correct in reversing a 32-bit integer when looking at the binary form of the integer. But it uses 54 operations instead of 45. We are strictly limited to using only !, +, ^, &, <<, >>, |, ~. We cannot use constants that are anything other than 0x0 to 0xFF. We also cannot use loops or conditionals, in other words "straight line" code. I am unsure where I can simplify this code in order to get it into the required maximum number of operations (45).

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question

This code is correct in reversing a 32-bit integer when looking at the binary form of the integer. But it uses 54 operations instead of 45. We are strictly limited to using only !, +, ^, &, <<, >>, |, ~. We cannot use constants that are anything other than 0x0 to 0xFF. We also cannot use loops or conditionals, in other words "straight line" code. I am unsure where I can simplify this code in order to get it into the required maximum number of operations (45).

 
Will leave good review!
 
int bitReverse(int x) {
int result, mask1, mask2, mask4, mask8, mask16, min;


min = 1 << 31;

mask16 = ((0xff << 8) | 0xff);
mask8 = (mask16 << 8) ^ mask16;
mask4 = (mask8 << 4) ^ mask8;
mask2 = (mask4 << 2) ^ mask4;
mask1 = (mask2 << 1) ^ mask2;

mask1 = ~mask1;
mask2 = ~mask2;
mask4 = ~mask4;
mask8 = ~mask8;
mask16 = ~mask16;

result = ((x << 16) & mask16) | (((x & mask16) >> 16) & (~mask16));
result = ((result << 8) & mask8) | (((result & mask8) >> 8) & (~(min >> 7)));
result = ((result << 4) & mask4) | (((result & mask4) >> 4) & (~(min >> 3)));
result = ((result << 2) & mask2) | (((result & mask2) >> 2) & (~(min >> 1)));
result = ((result << 1) & mask1) | (((result & mask1) >> 1) & (~min));

return result;
}
Expert Solution
steps

Step by step

Solved in 4 steps with 2 images

Blurred answer
Knowledge Booster
Returning value from Function
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education