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 negative

Input: 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

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)

Similar Reads

Find the absolute value of a given number Using Bitmasking:

...

Find the absolute value of a given number Using the inbuilt abs() function:

...