Uniendo salidas de interruptores

Me preguntaba si hay una manera de unir las salidas de los conmutadores en una variable, es decir, decir que tengo el conmutador 1, el conmutador 2, el conmutador 3 y el conmutador 4, cada conmutador se declara por separado. Las salidas de los conmutadores son conmutador 1 -0 2-1 interruptor 3 -1 interruptor 4 -0

y quiero unir estas salidas en una variable, por ejemplo, switch_output = 0110 y luego quiero cambiar esto en un número natural.

¿¿es posible??

Gracias

PD: esto es solo un ejemplo, en realidad estoy tratando de hacer esto con 18 interruptores, el progtwig que estoy usando, solo me permite declarar cada interruptor individualmente

Aquí es cómo se declaran

static const gpio_pin_t SW0 = { .port = 2, .pin = 0}; static const gpio_pin_t SW1 = { .port = 2, .pin = 1}; static const gpio_pin_t SW2 = { .port = 2, .pin = 2}; static const gpio_pin_t SW3 = { .port = 2, .pin = 3}; static const gpio_pin_t SW4 = { .port = 2, .pin = 4}; static const gpio_pin_t SW5 = { .port = 2, .pin = 5}; static const gpio_pin_t SW6 = { .port = 2, .pin = 6}; static const gpio_pin_t SW7 = { .port = 2, .pin = 7}; static const gpio_pin_t SW8 = { .port = 2, .pin = 8}; static const gpio_pin_t SW9 = { .port = 2, .pin = 9}; static const gpio_pin_t SW10 = { .port = 2, .pin = 10}; static const gpio_pin_t SW11 = { .port = 2, .pin = 11}; static const gpio_pin_t SW12 = { .port = 2, .pin = 12}; static const gpio_pin_t SW13 = { .port = 2, .pin = 13}; static const gpio_pin_t SW14 = { .port = 2, .pin = 14}; static const gpio_pin_t SW15 = { .port = 2, .pin = 15}; static const gpio_pin_t SW16 = { .port = 2, .pin = 16}; static const gpio_pin_t SW17 = { .port = 2, .pin = 17}; 

Mahmoud Fayez probé su solución y funciona hasta cierto punto, lo que obtengo es un número natural y no un número binario aquí es una pantalla de impresión de la salida imprimir pantalla

Y aquí está el código, tuve que modificarlo un poco para que funcione.

  for (i = 0; i < SwitchesCount; i++) { temp2 = GPIO_Get(Switches[i]); iResult = (iResult << 1) + temp2; printf ("%lu, ",temp2); } printf ("\n iResult = %lu \n",iResult); static uint32_t iResult = 0; 

uint32_t es largo sin firmar

Puedes probar esto:

 const int SwitchesCount = 18; int iResult = 0; int i = 0; static const gpio_pin_t switches[SwitchesCount] = {{ .port = 2, .pin = 0}, { .port = 2, .pin = 1},{ .port = 2, .pin = 2}, { .port = 2, .pin = 3}, { .port = 2, .pin = 4}, { .port = 2, .pin = 5}, { .port = 2, .pin = 6}, { .port = 2, .pin = 7}, { .port = 2, .pin = 8}, { .port = 2, .pin = 9},{ .port = 2, .pin = 10}, { .port = 2, .pin = 11}, { .port = 2, .pin = 12}, { .port = 2, .pin = 13}, { .port = 2, .pin = 14}, { .port = 2, .pin = 15}, { .port = 2, .pin = 16}, { .port = 2, .pin = 17}}; for (i = 0; i < SwitchesCount; i++) { iResult = iResult << 1 + switches[i]; } // you now have iResult with the value you are looking for.