Boa tarde, pessoal. No seguinte exercício é apresentada a resolução disponível em
#include <stdio.h>
#include <stdlib.h>
unsigned short int bits(int m[4][4])
{
unsigned short int valret=0, i, j;
printf("\n");
for(i=0 ; i<4 ; i++)
for(j=0 ; j<4 ; j++)
{
valret=(valret << 1 | m[i][j]);
printf("%d ", valret);
}
return valret;
}
main()
{
int i, j, num=0;
int m[4][4];
for(i=0 ; i<=3 ; i++)
for(j=0 ; j<=3 ; j++)
scanf("%d", &m[i][j]);
printf("\n\nnumero convertido para inteiro: %d", bits(m));
printf("\n\n");
}
Faça uma função que receba uma matriz M[4][4] de inteiros iguais a 0 ou 1, e retorne um inteiro de 16 bits sem sinal em que cada bit contem o valor correspondente a uma posição da matriz. O bit 15 deve conter o valor da posição m[0][0] e o bit 0 deve conter o valor da posição [3][3].
Alguém poderia me explicar qual o propósito da linha 11: valret=(valret << 1 | m[i][j])
?