Question
I can only use integers constants 0 through 255 (0xFF), inclusive. You are not allowed to use big constants such as 0xffffffff, no global variables,unary
I can only use integers constants 0 through 255 (0xFF), inclusive. You are not allowed to use big constants such as 0xffffffff, no global variables,unary integer operations ! ~, binary integer operations & ^ | + << >>. I can not use any control constructs such as if, do, while, for, switch, etc. Or define or use any macros or define any additional functions in the file or call any functions or use any other operations, such as &&, ||, -, or ?. Nor any form of casting or any data type other than int. This pimples that you cannot use arrays, structs, or unions. The machine uses 2s complement, 32-bit representations of integers, performs right shifts arithmetically, and has unpredictable behavior when shifting if the shift amount is less than 0 or greater than 31.
Example of acceptable coding style:
/*
* pow2plus1 - returns 2^x + 1, where 0 <= x <= 31
*/
int pow2plus1(int x){
.* exploit ability of shifts to compute powers of 2 */
return ( 1 << x) +1;
}
The question on my assignment is "return 1 if 0x30 <= x <= 0x39 and return 0 if not". Examples are if x = 0x35 then the functions = 1; and if x = 0x05 then the function returns 0. The operations I can only use are : ! ~ | + >> and I can use a maximum of 9.
Function outline:
int middle(int x){
return
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started