Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7606983
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 31, 20262026-05-31T00:32:48+00:00 2026-05-31T00:32:48+00:00

the program below computes the value of this expression below m = i /16

  • 0

the program below computes the value of this expression below

m = i /16 + j *128-17 + k *2- l /32 , if i > j + 2 * k else 
m = i /16 + j *128-17 + k *2 + l /32

the person who wrote this program did not use multiplication and division operators,may somebody explain to me whats really going on here,i mean where are the( * and /) in the program?why or what is the purpose of the shifting right and left?

#include <stdio.h>
#include <cstdlib>

int main(){
    unsigned int i, j, k, l, m;
    printf("i = "); scanf("%d", &i);
    printf("j = "); scanf("%d", &j);
    printf("k = "); scanf("%d", &k);
    printf("l = "); scanf("%d", &l);
    if (i > j + (k << 1)) 
        m = (i >> 4) + (j << 7) - 17 + (k << 1) - (l >> 5);
    else
        m = (i >> 4) + (j << 7) - 17 + (k << 1) + (l >> 5);
    printf("m = %d\n", m);
    system("pause");
}
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-31T00:32:49+00:00Added an answer on May 31, 2026 at 12:32 am

    Each digit in a binary number is 2 times the previous digit:

       1    Binary = 1 Decimal
      10    Binary = 2 Decimal
     100    Binary = 4 decimal
    1000    Binary = 8 decimal
    

    Thus if you shift the bits 1 place to the left in a number it is equivalent to multiplying by 2.

    Conversely shifting 1 place to the right is like dividing by 2.

    If you shift multiple places you just increase by a power of 2. Thus shifting n places to the left is like multiplying by 2^n and shifting n places to the right is like dividing by 2^n etc.

       i / 16
    => i / (2^4) 
    => 1 >> 4      // division right shift
    
       j * 128
    => j * (2^7)
    => j << 7      // multiplication left shift
    
       k * 2
    => k * (2^1)
    => k << 1      // multiplication left shift
    
       l / 32
    => 1 / (2^5) 
    => l >> 5      // division right shift
    

    There is absolutely no reason to do this.
    In fact I would say it is a terrible and completely bad practice in normal situations; the compiler will automatically do this optimization if it thinks it will be a benefit and the downside (as you have noticed) is that it makes the code much harder to read.

    If you know the compiler is bad and does not do this then maybe it is worth doing (but only maybe).

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

In this below program i am printing the contents of the div when i
I'm a PHP newbie. I'm trying to use preg_match_all function in the below program
The program below prints: my name is:null my name is:null Someclass static init AFAIK
I am using the program below to sort and eventually print out email messages.
In the program below, there are two things that I don't understand. How can
The example program below compiles two in-memory assemblies. The first compilation works fine. The
Why doesn't func3 get executed in the program below? After func1, func2 doesn't need
(In short: main()'s WaitForSingleObject hangs in the program below). I'm trying to write a
Below program contains two show() functions in parent and child classes, but first show()
In the below program: class Main { static string staticVariable = Static Variable; string

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.