Write
a program to increment a number by one without using operators like ‘+’, ‘-‘,
‘*’, ‘/’, ‘++’, ‘–‘ …etc.
Examples:
Input:
20
Output:
21
We
can achieve the functionality using bitwise operators.
Approach#
To
increment the bit, we need to add 1 in binary representation. However addition
is not allowed.
So we
can check the each bit and flip it using bitwise operators.
Step#1 Flip all the set bits until we find
a 0. (Alternate to Carry forward in addition)
Step#2 Flip the rightmost 0 bit (Add the new value at right side).
Bitwise
representation of 20 is 10100.
public class IncrementByOne {
public static void main(String[] args) {
int value = 20;
value = increment(20);
System.out.println(value);
}
static int
increment(int number) {
int one = 1;
/* Flip all the set bits until we find a 0
*/
while((number & one)!=0
) {
number = number^one;
one <<= 1;
}
/* flip the rightmost 0 bit */
number = number^one;
return number;
}
}
Output:
21
No comments:
Post a Comment