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

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

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

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

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

textual
Листинг программы
  1. #include <iostream>
  2. #include <math.h>
  3. using namespace std;
  4.  
  5. int mask (unsigned x, char q , char m);
  6.  
  7. int main()
  8. {
  9.     cout << mask(15,2,2) << endl;
  10.     return 0;
  11. }
  12. int mask (unsigned x, char q , char m)
  13. {
  14.     unsigned begin = pow(2 , q + m) - 1;
  15.     unsigned end =  ~(unsigned)(pow(2 , q ) - 1) ;
  16.  
  17.     return x^(begin&end);
  18. }

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


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

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

6   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы