fork(1) 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 в шестнадцатеричной: ";
  18. cin >> hex >> x;
  19. cout << "Введите p позицию и число инвертированных битов n ";
  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 3480KB
stdin
0x10
1 1
stdout
Введите x в шестнадцатеричной: Введите p позицию и число инвертированных битов n Исходный x 00000000000000000000000000010000
Инвертированный x 10000000000000000000000000010000