Skip to main content

Smallest of three integers without comparison operators

Bit manipulation trick to find the minimum of two integers a and b, without using comparison operators.

Code Solution

// C program for
// Smallest of three integers without comparison operators
#include <stdio.h>

// Return a minimum value of given two numbers
int minValue(int a, int b)
{
  return b + (((a - b) >> (sizeof(int) *7)) & (a - b));
}
// Handles the request of finding minimum of given three numbers
void smallest(int a, int b, int c)
{
  // Display given value
  printf(" A : %d\n", a);
  printf(" B : %d\n", b);
  printf(" C : %d\n", c);
  int result = minValue(a, minValue(b, c));
  // Display calculated minimum
  printf(" Minimum is : %d\n\n", result);
}
int main()
{
  // Test cases
  smallest(3, -2, -6);
  smallest(5, 9, 7);
  smallest(-2, -2, -1);
  smallest(12, 3, 4);
  return 0;
}

Output

 A : 3
 B : -2
 C : -6
 Minimum is : -6

 A : 5
 B : 9
 C : 7
 Minimum is : 5

 A : -2
 B : -2
 C : -1
 Minimum is : -2

 A : 12
 B : 3
 C : 4
 Minimum is : 3
/*
  Java Program for
  Smallest of three integers without comparison operators
*/
class Comparison
{
  // Return a minimum value of given two numbers
  public int minValue(int a, int b)
  {
    return b + (((a - b) >> (Integer.SIZE-1)) & (a - b));
  }
  // Handles the request of finding minimum of given three numbers
  public void smallest(int a, int b, int c)
  {
    // Display given value
    System.out.print(" A : " + a + "\n");
    System.out.print(" B : " + b + "\n");
    System.out.print(" C : " + c + "\n");
    int result = minValue(a, minValue(b, c));
    // Display calculated minimum
    System.out.print(" Minimum is : " + result + "\n\n");
  }
  public static void main(String[] args)
  {
    Comparison task = new Comparison();
    // Test cases
    task.smallest(3, -2, -6);
    task.smallest(5, 9, 7);
    task.smallest(-2, -2, -1);
    task.smallest(12, 3, 4);
  }
}

Output

 A : 3
 B : -2
 C : -6
 Minimum is : -6

 A : 5
 B : 9
 C : 7
 Minimum is : 5

 A : -2
 B : -2
 C : -1
 Minimum is : -2

 A : 12
 B : 3
 C : 4
 Minimum is : 3
// Include header file
#include <iostream>

#include<limits.h>

using namespace std;
/*
  C++ Program for
  Smallest of three integers without comparison operators
*/
class Comparison
{
  public:
    // Return a minimum value of given two numbers
    int minValue(int a, int b)
    {
      return b + (((a - b) >> (sizeof(int) *7)) &(a - b));
    }
  // Handles the request of finding minimum of given three numbers
  void smallest(int a, int b, int c)
  {
    // Display given value
    cout << " A : " << a << "\n";
    cout << " B : " << b << "\n";
    cout << " C : " << c << "\n";
    int result = this->minValue(a, this->minValue(b, c));
    // Display calculated minimum
    cout << " Minimum is : " << result << "\n\n";
  }
};
int main()
{
  Comparison task = Comparison();
  // Test cases
  task.smallest(3, -2, -6);
  task.smallest(5, 9, 7);
  task.smallest(-2, -2, -1);
  task.smallest(12, 3, 4);
  return 0;
}

Output

 A : 3
 B : -2
 C : -6
 Minimum is : -6

 A : 5
 B : 9
 C : 7
 Minimum is : 5

 A : -2
 B : -2
 C : -1
 Minimum is : -2

 A : 12
 B : 3
 C : 4
 Minimum is : 3
// Include namespace system
using System;
/*
  C# Program for
  Smallest of three integers without comparison operators
*/
public class Comparison
{
  // Return a minimum value of given two numbers
  public int minValue(int a, int b)
  {
    return b + (((a - b) >> (sizeof(int) * 7)) & (a - b));
  }
  // Handles the request of finding minimum of given three numbers
  public void smallest(int a, int b, int c)
  {
    // Display given value
    Console.Write(" A : " + a + "\n");
    Console.Write(" B : " + b + "\n");
    Console.Write(" C : " + c + "\n");
    int result = minValue(a, minValue(b, c));
    // Display calculated minimum
    Console.Write(" Minimum is : " + result + "\n\n");
  }
  public static void Main(String[] args)
  {
    Comparison task = new Comparison();
    // Test cases
    task.smallest(3, -2, -6);
    task.smallest(5, 9, 7);
    task.smallest(-2, -2, -1);
    task.smallest(12, 3, 4);
  }
}

Output

 A : 3
 B : -2
 C : -6
 Minimum is : -6

 A : 5
 B : 9
 C : 7
 Minimum is : 5

 A : -2
 B : -2
 C : -1
 Minimum is : -2

 A : 12
 B : 3
 C : 4
 Minimum is : 3
<?php
/*
  Php Program for
  Smallest of three integers without comparison operators
*/
class Comparison
{
  // Return a minimum value of given two numbers
  public  function minValue($a, $b)
  {
    return $b + ((($a - $b) >> (8 * (PHP_INT_SIZE - 1))) & ($a - $b));
  }
  // Handles the request of finding minimum of given three numbers
  public  function smallest($a, $b, $c)
  {
    // Display given value
    echo " A : ". $a ."\n";
    echo " B : ". $b ."\n";
    echo " C : ". $c ."\n";
    $result = $this->minValue($a, $this->minValue($b, $c));
    // Display calculated minimum
    echo " Minimum is : ". $result ."\n\n";
  }
}

function main()
{
  $task = new Comparison();
  // Test cases
  $task->smallest(3, -2, -6);
  $task->smallest(5, 9, 7);
  $task->smallest(-2, -2, -1);
  $task->smallest(12, 3, 4);
}
main();

Output

 A : 3
 B : -2
 C : -6
 Minimum is : -6

 A : 5
 B : 9
 C : 7
 Minimum is : 5

 A : -2
 B : -2
 C : -1
 Minimum is : -2

 A : 12
 B : 3
 C : 4
 Minimum is : 3
/*
  Node Js Program for
  Smallest of three integers without comparison operators
*/
class Comparison
{
  // Return a minimum value of given two numbers
  minValue(a, b)
  {
    return b + (((a - b) >> (31)) & (a - b));
  }
  // Handles the request of finding minimum of given three numbers
  smallest(a, b, c)
  {
    // Display given value
    process.stdout.write(" A : " + a + "\n");
    process.stdout.write(" B : " + b + "\n");
    process.stdout.write(" C : " + c + "\n");
    var result = this.minValue(a, this.minValue(b, c));
    // Display calculated minimum
    process.stdout.write(" Minimum is : " + result + "\n\n");
  }
}

function main()
{
  var task = new Comparison();
  // Test cases
  task.smallest(3, -2, -6);
  task.smallest(5, 9, 7);
  task.smallest(-2, -2, -1);
  task.smallest(12, 3, 4);
}
main();

Output

 A : 3
 B : -2
 C : -6
 Minimum is : -6

 A : 5
 B : 9
 C : 7
 Minimum is : 5

 A : -2
 B : -2
 C : -1
 Minimum is : -2

 A : 12
 B : 3
 C : 4
 Minimum is : 3
import sys
#   Python 3 Program for
#   Smallest of three integers without comparison operators

class Comparison :
  #  Return a minimum value of given two numbers
  def minValue(self, a, b) :
    return b + (((a - b) >> (sys.getsizeof(int()) - 1)) & (a - b))
  
  #  Handles the request of finding minimum of given three numbers
  def smallest(self, a, b, c) :
    #  Display given value
    print(" A : ", a )
    print(" B : ", b )
    print(" C : ", c )
    result = self.minValue(a, self.minValue(b, c))
    #  Display calculated minimum
    print(" Minimum is : ", result ,"\n")
  

def main() :
  task = Comparison()
  #  Test cases
  task.smallest(3, -2, -6)
  task.smallest(5, 9, 7)
  task.smallest(-2, -2, -1)
  task.smallest(12, 3, 4)

if __name__ == "__main__": main()

Output

 A :  3
 B :  -2
 C :  -6
 Minimum is :  -6

 A :  5
 B :  9
 C :  7
 Minimum is :  5

 A :  -2
 B :  -2
 C :  -1
 Minimum is :  -2

 A :  12
 B :  3
 C :  4
 Minimum is :  3
#   Ruby Program for
#   Smallest of three integers without comparison operators

class Comparison 
  #  Return a minimum value of given two numbers
  def minValue(a, b) 
    return b + (((a - b) >> ( (1.size) * 8 - 1)) & (a - b))
  end

  #  Handles the request of finding minimum of given three numbers
  def smallest(a, b, c) 
    #  Display given value
    print(" A : ", a ,"\n")
    print(" B : ", b ,"\n")
    print(" C : ", c ,"\n")
    result = self.minValue(a, self.minValue(b, c))
    #  Display calculated minimum
    print(" Minimum is : ", result ,"\n\n")
  end

end

def main() 
  task = Comparison.new()
  #  Test cases
  task.smallest(3, -2, -6)
  task.smallest(5, 9, 7)
  task.smallest(-2, -2, -1)
  task.smallest(12, 3, 4)
end

main()

Output

 A : 3
 B : -2
 C : -6
 Minimum is : -6

 A : 5
 B : 9
 C : 7
 Minimum is : 5

 A : -2
 B : -2
 C : -1
 Minimum is : -2

 A : 12
 B : 3
 C : 4
 Minimum is : 3

/*
  Scala Program for
  Smallest of three integers without comparison operators
*/
class Comparison
{
  // Return a minimum value of given two numbers
  def minValue(a: Int, b: Int): Int = {
    return b + (((a - b) >> (Integer.SIZE - 1)) & (a - b));
  }
  // Handles the request of finding minimum of given three numbers
  def smallest(a: Int, b: Int, c: Int): Unit = {
    // Display given value
    print(" A : " + a + "\n");
    print(" B : " + b + "\n");
    print(" C : " + c + "\n");
    var result: Int = this.minValue(a, this.minValue(b, c));
    // Display calculated minimum
    print(" Minimum is : " + result + "\n\n");
  }
}
object Main
{
  def main(args: Array[String]): Unit = {
    var task: Comparison = new Comparison();
    // Test cases
    task.smallest(3, -2, -6);
    task.smallest(5, 9, 7);
    task.smallest(-2, -2, -1);
    task.smallest(12, 3, 4);
  }
}

Output

 A : 3
 B : -2
 C : -6
 Minimum is : -6

 A : 5
 B : 9
 C : 7
 Minimum is : 5

 A : -2
 B : -2
 C : -1
 Minimum is : -2

 A : 12
 B : 3
 C : 4
 Minimum is : 3
/*
  Swift 4 Program for
  Smallest of three integers without comparison operators
*/
class Comparison
{
  // Return a minimum value of given two numbers
  func minValue(_ a: Int, _ b: Int)->Int
  {
    return b + (((a - b) >> (4 * MemoryLayout.size(ofValue:1) - 1)) & (a - b));
  }
  // Handles the request of finding minimum of given three numbers
  func smallest(_ a: Int, _ b: Int, _ c: Int)
  {
    // Display given value
    print(" A : ", a );
    print(" B : ", b );
    print(" C : ", c );
    let result: Int = self.minValue(a, self.minValue(b, c));
    // Display calculated minimum
    print(" Minimum is : ", result ,"\n");
  }
}
func main()
{
  let task: Comparison = Comparison();
  // Test cases
  task.smallest(3, -2, -6);
  task.smallest(5, 9, 7);
  task.smallest(-2, -2, -1);
  task.smallest(12, 3, 4);
}
main();

Output

 A :  3
 B :  -2
 C :  -6
 Minimum is :  -6

 A :  5
 B :  9
 C :  7
 Minimum is :  5

 A :  -2
 B :  -2
 C :  -1
 Minimum is :  -2

 A :  12
 B :  3
 C :  4
 Minimum is :  3
/*
  Kotlin Program for
  Smallest of three integers without comparison operators
*/
class Comparison
{
  // Return a minimum value of given two numbers
  fun minValue(a: Int, b: Int): Int
  {
    return b + (((a - b) shr (Integer.SIZE - 1)) and (a - b));
  }
  // Handles the request of finding minimum of given three numbers
  fun smallest(a: Int, b: Int, c: Int): Unit
  {
    // Display given value
    print(" A : " + a + "\n");
    print(" B : " + b + "\n");
    print(" C : " + c + "\n");
    var result: Int = this.minValue(a, this.minValue(b, c));
    // Display calculated minimum
    print(" Minimum is : " + result + "\n\n");
  }
}
fun main(args: Array < String > ): Unit
{
  var task: Comparison = Comparison();
  // Test cases
  task.smallest(3, -2, -6);
  task.smallest(5, 9, 7);
  task.smallest(-2, -2, -1);
  task.smallest(12, 3, 4);
}

Output

 A : 3
 B : -2
 C : -6
 Minimum is : -6

 A : 5
 B : 9
 C : 7
 Minimum is : 5

 A : -2
 B : -2
 C : -1
 Minimum is : -2

 A : 12
 B : 3
 C : 4
 Minimum is : 3
package main
import "fmt"
import "unsafe"
/*
  Go Program for
  Smallest of three integers without comparison operators
*/
type Comparison struct {}
func getComparison() * Comparison {
  var me *Comparison = &Comparison {}
  return me
}
// Return a minimum value of given two numbers
func(this Comparison) minValue(a, b int) int {
  return b + (((a - b) >> (unsafe.Sizeof(1) - 1)) & (a - b))
}
// Handles the request of finding minimum of given three numbers
func(this Comparison) smallest(a, b, c int) {
  // Display given value
  fmt.Print(" A : ", a, "\n")
  fmt.Print(" B : ", b, "\n")
  fmt.Print(" C : ", c, "\n")
  var result int = this.minValue(a, this.minValue(b, c))
  // Display calculated minimum
  fmt.Println(" Minimum is : ", result)
}
func main() {
  var task * Comparison = getComparison()
  // Test cases
  task.smallest(3, -2, -6)
  task.smallest(5, 9, 7)
  task.smallest(-2, -2, -1)
  task.smallest(12, 3, 4)
}

Output

 A : 3
 B : -2
 C : -6
 Minimum is : -6
 A : 5
 B : 9
 C : 7
 Minimum is : 5
 A : -2
 B : -2
 C : -1
 Minimum is : -2
 A : 12
 B : 3
 C : 4
 Minimum is : 3




Comment

Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.

New Comment