Advance Imaginations

It's All About (The) Advance Imaginations.

Tuesday, January 3, 2023

Bitwise Operators in C - HackerRank Solution

Problem

In this challenge, you will use logical bitwise operators. All data is stored in its binary representation. The logical operators, and C language, use to represent true and to represent false. The logical operators compare bits in two numbers and return true or false,  or, for each bit compared.

  • Bitwise AND operator & The output of bitwise AND is 1 if the corresponding bits of two operands is 1. If either bit of an operand is 0, the result of the corresponding bit is evaluated to 0. It is denoted by &.

  • Bitwise OR operator | The output of bitwise OR is 1 if at least one corresponding bit of two operands is 1. It is denoted by |.

  • Bitwise XOR (exclusive OR) operator ^ The result of bitwise XOR operator is 1 if the corresponding bits of two operands are opposite. It is denoted by .

For example, for integers 3 and 5,

3 = 00000011 (In Binary)
5 = 00000101 (In Binary)

AND operation        OR operation        XOR operation
  00000011             00000011            00000011
& 00000101           | 00000101          ^ 00000101
  ________             ________            ________
  00000001  = 1        00000111  = 7       00000110  = 6

You will be given an integer , and a threshold, i1nnik$. Print the results of the and, or and exclusive or comparisons on separate lines, in that order.

Example

The results of the comparisons are below:

a b   and or xor
1 2   0   3  3
1 3   1   3  2
2 3   2   3  1

For the and comparison, the maximum is 2. For the or comparison, none of the values is less than, so the maximum is . For the xor comparison, the maximum value less than is . The function should print:

2
0
2

Function Description

Complete the calculate_the_maximum function in the editor below.

calculate_the_maximum has the following parameters:

  • int n: the highest number to consider
  • int k: the result of a comparison must be lower than this number to be considered

Prints

Print the maximum values for the andor and xor comparisons, each on a separate line.

Input Format

The only line contains space-separated integers,  and.

Constraints

  • 2 <= n <=  10^3
  • 2 <= k <= n

Sample Input 0

5 4

Sample Output 0

2
3
3

Explanation 0

All possible values of  and  are:

  1.  1   2
  2.  1   3
  3.  1   4
  4.  1   5
  5.  2   3
  6.  2   4
  7.  2   5
  8.  3   4
  9.  3   5
  10.  4   5
    • The maximum possible value of AND 2 that is also  is 2 < k, so we print 2 on first line.

    • The maximum possible value of  OR that is also  is 3 < k , so we print  3 on second line.

    • The maximum possible value of XOR  that is also  is  3< k , so we print 3  on third line.




Code :
      


#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
//Complete the following function.


void calculate_the_maximum(int n, int k) {
  //Write your code here.
  int i, j, max_and=0, max_or=0, max_exor=0, and_op, or_op, xor_op;

  for(i = 1; i< n; i++){
    for(j = (i+1); j<=n; j++){
      and_op = i & j;
      or_op = i | j;
      xor_op = i ^ j;
     if( and_op > max_and && and_op < k){
      max_and = and_op;
     }
     if( or_op > max_or && or_op < k){
      max_or = or_op;
     }
     if( xor_op > max_exor && xor_op < k){
      max_exor = xor_op;
     }
    }
  }
  printf("%d\n%d\n%d", max_and, max_or, max_exor);

}

int main() {
    int n, k;
    
    scanf("%d %d", &n, &k);
    calculate_the_maximum(n, k);
 
    return 0;
}




Output : 
HackerRank Solution output



No comments:

Post a Comment

Thanks for spending some time with our blogs; we value your time & feedback. It motivates us to create even more meaningful content further.