fork download
  1. #include <iostream>
  2. #include <bitset>
  3. using namespace std;
  4. unsigned
  5. invert(unsigned x, int p, int n)
  6. {
  7. int count = sizeof(x) * 8;
  8. unsigned t = ((unsigned) ~0 << (p - 1)) >> (count - n) << (count - n - p + 1);
  9. return (~x & t) | (x & ~t);
  10. }
  11.  
  12. int
  13. main()
  14. {
  15. unsigned x;
  16. int p, n;
  17. cout << "Введите x в шестнадцатеричной: " << endl;
  18. cin >> hex >> x;
  19. cout << "Введите p позицию и число инвертированных битов n " << endl;
  20. cin >> dec >> p >> n;
  21. cout << "Исходный x " << bitset<sizeof(x) * 8>(x) << endl
  22. << "Инвертированный x " << bitset<sizeof(x) * 8>(invert(x, p, n)) << endl;
  23. return 0;
  24. }
Success #stdin #stdout 0s 2864KB
stdin
0a
31
2
stdout
Введите x в шестнадцатеричной: 
Введите p позицию и число инвертированных битов n 
Исходный x 00000000000000000000000000001010
Инвертированный x 00000000000000000000000000001001