Не выполняется проверка условия - 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); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д