Find the absolute value of a given number Using Bitmasking
To solve the problem follow the below idea:
Negative numbers are stored in the form of 2s complement, to get the absolute value we have to toggle bits of the number and add 1 to the result.
Follow the steps below to implement the idea:
- Set the mask as right shift of the integer by 31 (assuming integers are stored using 32 bits) mask = n >> 31
- For negative numbers, above step sets mask as 1 1 1 1 1 1 1 1 and 0 0 0 0 0 0 0 0 for positive numbers. Add the mask to the given number i.e. mask + n
- XOR of mask + n and mask gives the absolute value i.e.
Below is the implementation of the above approach.
C++
// C++ program for above approach #include <bits/stdc++.h> using namespace std; // Function to find the absolute // value void findAbsolute( int N) { // Find mask int mask = N >> ( sizeof ( int ) * CHAR_BIT - 1); // Print the absolute value // by (mask + N)^mask cout << ((mask + N) ^ mask); } // Driver Code int main() { // Given integer int N = -12; // Function call findAbsolute(N); return 0; } // This code is contributed by Code_Mech |
C
// C program for Method 2 #include <stdio.h> #define CHAR_BIT 8 // Function to find the absolute // value void findAbsolute( int N) { // Find mask int mask = N >> ( sizeof ( int ) * CHAR_BIT - 1); // Print the absolute value // by (mask + N)^mask printf ( "%d " , (mask + N) ^ mask); } // Driver Code int main() { // Given integer int N = -12; // Function call findAbsolute(N); return 0; } |
Java
// Java program for Method 2 class GFG{ static final int CHAR_BIT = 8 ; // Function to find the absolute value static void findAbsolute( int N) { // Find mask int mask = N >> (Integer.SIZE / 8 * CHAR_BIT - 1 ); // Print the absolute value // by (mask + N)^mask System.out.printf( "%d " , (mask + N) ^ mask); } // Driver Code public static void main(String[] args) { // Given integer int N = - 12 ; // Function call findAbsolute(N); } } // This code is contributed by 29AjayKumar |
Python3
# Python3 program for Method 2 import sys CHAR_BIT = 8 ; # Function to find the absolute value def findAbsolute(N): # Find mask mask = N >> (sys.getsizeof( int ()) / / 8 * CHAR_BIT - 1 ); # Print the absolute value # by (mask + N)^mask print ((mask + N) ^ mask); # Driver Code if __name__ = = '__main__' : # Given integer N = - 12 ; # Function call findAbsolute(N); # This code is contributed by 29AjayKumar |
C#
// C# program for Method 2 using System; class GFG{ static readonly int CHAR_BIT = 8; // Function to find the absolute value static void findAbsolute( int N) { // Find mask int mask = N >> ( sizeof ( int ) / 8 * CHAR_BIT - 1); // Print the absolute value // by (mask + N)^mask Console.Write((mask + N) ^ mask); } // Driver Code public static void Main(String[] args) { // Given integer int N = -12; // Function call findAbsolute(N); } } // This code is contributed by 29AjayKumar |
Javascript
<script> // Javascript program for Method 2 let CHAR_BIT = 8; // Function to find the absolute value function findAbsolute(N) { // Find mask let mask = N >> (4 / 8 * CHAR_BIT - 1); // Print the absolute value // by (mask + N)^mask document.write((mask + N) ^ mask); } // Given integer let N = -12; // Function call findAbsolute(N); // This code is contributed by mukesh07. </script> |
Output
12
Time Complexity: O(1)
Auxiliary Space: O(1)
Program to find absolute value of a given number
Given an integer N, The task is to find the absolute value of the given integer.
Examples:
Input: N = -6
Output: 6
Explanation: The absolute value of -6 is 6 which is non negativeInput: N = 12
Output: 12
Naive Approach: To solve the problem follow the below idea:
The absolute value of any number is always positive. For any positive number, the absolute value is the number itself and for any negative number, the absolute value is (-1) multiplied by the negative number
Learn More, Positive and Negative Numbers
Below is the implementation of the above approach.
C++
// C++ program for Method 1 #include <bits/stdc++.h> using namespace std; // Function to find the absolute value void findAbsolute( int N) { // If the number is less than // zero, then multiply by (-1) if (N < 0) { N = (-1) * N; } // Print the absolute value cout << " " << N; } // Driver Code int main() { // Given integer int N = -12; // Function call findAbsolute(N); return 0; } // This code is contributed by shivanisinghss2110 |
C
// C program for Method 1 #include <stdio.h> // Function to find the absolute value void findAbsolute( int N) { // If the number is less than // zero, then multiply by (-1) if (N < 0) { N = (-1) * N; } // Print the absolute value printf ( "%d " , N); } // Driver Code int main() { // Given integer int N = -12; // Function call findAbsolute(N); return 0; } |
Java
// Java program for Method 1 class GFG{ // Function to find the absolute value static void findAbsolute( int N) { // If the number is less than // zero, then multiply by (-1) if (N < 0 ) { N = (- 1 ) * N; } // Print the absolute value System.out.printf( "%d " , N); } // Driver Code public static void main(String[] args) { // Given integer int N = - 12 ; // Function call findAbsolute(N); } } // This code is contributed by 29AjayKumar |
Python3
# Python3 program for Method 1 # Function to find the absolute value def findAbsolute(N): # If the number is less than # zero, then multiply by (-1) if (N < 0 ): N = ( - 1 ) * N; # Print the absolute value print (N); # Driver code if __name__ = = '__main__' : # Given integer N = - 12 ; # Function call findAbsolute(N); # This is code contributed by amal kumar choubey |
C#
// C# program for Method 1 using System; using System.Collections.Generic; class GFG{ // Function to find the absolute value static void findAbsolute( int N) { // If the number is less than // zero, then multiply by (-1) if (N < 0) { N = (-1) * N; } // Print the absolute value Console.Write( "{0} " , N); } // Driver Code public static void Main(String[] args) { // Given integer int N = -12; // Function call findAbsolute(N); } } // This code is contributed by sapnasingh4991 |
Javascript
<script> // Javascript program for Method 1 // Function to find the absolute value function findAbsolute(N) { // If the number is less than // zero, then multiply by (-1) if (N < 0) { N = (-1) * N; } // Print the absolute value document.write( " " + N); } // Given integer let N = -12; // Function call findAbsolute(N); // This code is contributed by suresh07. </script> |
Output
12
Time Complexity: O(1)
Auxiliary Space: O(1)