Advertisement
Guest User

Untitled

a guest
Oct 20th, 2018
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.40 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <io.h>
  3. // #include <system.h>
  4. #include "../include/definition.h"
  5. #include <iostream>
  6. #include <bitset>
  7.  
  8. int getFirstOnePos(int val)
  9. {
  10.     for (int i = 0; i < sizeof(val)*8; ++i)
  11.     {
  12.         if (val & 1)
  13.             return i;
  14.         val >>= 1;
  15.     }
  16.     return -1;
  17. }
  18.  
  19. int setBit(int source, int pin, int state)
  20. {
  21.     return state == 0 ? source &= ~(1UL << getFirstOnePos(pin)) : source |= 1UL << getFirstOnePos(pin);
  22. }
  23.  
  24. int switchState(int source, int pin)
  25. {
  26.     return source ^= 1UL << getFirstOnePos(pin);
  27. }
  28.  
  29. int checkState(int source, int pin)
  30. {
  31.     return (source & (1 << getFirstOnePos(pin))) == 0 ? 0 : 1;
  32. }
  33.  
  34. int main()
  35. {               //  9876543210
  36.     int swstate = 0b0000000000;
  37.     //while (1)
  38.     {
  39.         //printf(".");
  40.         swstate = setBit(swstate, SW6, 0);
  41.         swstate = setBit(swstate, SW7, 0);
  42.         swstate = setBit(swstate, SW8, 0);
  43.         swstate = setBit(swstate, SW9, 0);
  44.         switch (swstate)
  45.         {
  46.         case SW0:
  47.             std::cout << "0" << std::endl;
  48.             break;
  49.         case SW1:
  50.             std::cout << "1" << std::endl;
  51.             break;
  52.         case SW2:
  53.             std::cout << "2" << std::endl;
  54.             break;
  55.         case SW3:
  56.             std::cout << "3" << std::endl;
  57.             break;
  58.         case SW4:
  59.             std::cout << "4" << std::endl;
  60.             break;
  61.         case SW5:
  62.             std::cout << "5" << std::endl;
  63.             break;
  64.         default:
  65.             if (swstate == 0)
  66.                 std::cout << "OK" << std::endl;
  67.             else
  68.                 std::cout << "ERR" << std::endl;
  69.             break;
  70.         }
  71.     }
  72.     std::cin.get();
  73.     return 0;
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement