dario1133 Posted September 13, 2013 at 02:23 PM Report #524471 Posted September 13, 2013 at 02:23 PM Tenho a seguinte variável (char): msgtype = 0100 0000 Quero ficar apenas com os 6 bits menos significativos (00 0000). Penso que tenho de fazer um & com (0000 0000) mas não sei como fazer. Obrigado
nelsonr Posted September 13, 2013 at 02:39 PM Report #524477 Posted September 13, 2013 at 02:39 PM Sera algo assim: char x=msgtype & 31;
HappyHippyHippo Posted September 13, 2013 at 02:49 PM Report #524481 Posted September 13, 2013 at 02:49 PM primeiro de tudo, vou assumir uma coisas : - o "código" que apresentas não é código, porque estás a atribuir o valor 1000000 (decimal) à variável msgtype segundo, existem várias maneira de obter o que pretendes: char result; char msgtype = 0x40; /* exemplo 1: * * 0x3F = 111111 */ result = msgtype & 0x3F; /* exemplo 3: * * 0xC0 = 11000000 * ~0xC0 = 00111111 */ result = msgtype & ~0xC0; /* exemplo 3: * * XXAB CDEF << 2 = ABCD EF00 * ABCD EF00 >> 2 = 00AB CDEF */ result = (msgtype << 2) >> 2; eu gosto mais da terceira solução porque é mais versátil. deixa-te ter coisas como : char result; char nbits; char msgtype; msgtype = 0x40; nbits = 6; result = (msgtype << (sizeof(msgtype) * 8 - nbits)) >> (sizeof(msgtype) * 8 - nbits); /* result = <nbits> bits menos significativos */ result = msgtype >> (sizeof(msgtype) * 8 - nbits); /* result = <nbits> bits mais significativos */ IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now