Не выполняется проверка условия - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Добрый день! Задача: Составить функцию inv (x, q, m), что возвращает x с инвертированными m битами, начиная с позиции q (остальные биты не изменяются).
#include "stdafx.h"
#include "stdio.h"
#include "conio.h"
 
double Pow(double x, int y)
{
    return y > 0 ? x * Pow(x, y - 1) : !y ? 1.0 : 1.0 / Pow(x, -y);
}
int _tmain(int argc, _TCHAR* argv[])
{unsigned int x=48;
int q=0,m=5;
int i=32,s;
m=Pow(2.0,q+m);
q=Pow(2.0,q);
for (i=q;i<=m;i*=2)
{
if (x&i==0)//Вот здесь почему то не хочет выполняться проверка всегда кидает на else
x=x & ~i;
else
x=x|i;
 }
printf("%i",x);
getch();
}

Решение задачи: «Не выполняется проверка условия»

textual
Листинг программы
#include <iostream>
#include <math.h>
using namespace std;
 
int mask (unsigned x, char q , char m);
 
int main()
{
    cout << mask(15,2,2) << endl;
    return 0;
}
int mask (unsigned x, char q , char m)
{
    unsigned begin = pow(2 , q + m) - 1;
    unsigned end =  ~(unsigned)(pow(2 , q ) - 1) ;
 
    return x^(begin&end);
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы