05-16-2011 11:08 AM
Hi,
Sorry but my English is not good.
I'm trying to execute a bit shift left in the Formula Node, but the shift left is not working as I expected.
uInt32 parametro[5]; float32 valorAmostra; int16 indiceAmostra; uInt8 indiceResposta; int16 controle; int32 valor; int8 i; for(i=0; i<5; i++) parametro[i]=param[i]; valor = parametro[5]<<16 | parametro[4]<<8 | parametro[3]; controle = parametro[1]<<8 | parametro[0]; indiceAmostra = (controle & 0x3FF); indiceResposta = (controle >> 10); valorAmostra = valor & 0x7FFFFF; valorAmostra = valorAmostra*(2.4/8388607); if((valor & 0x800000) == 0x800000) valorAmostra = valorAmostra*(-1);
the input param array is of the type uInt8, as I saw in other topics that does not shift with uInt8,
I copy the values of param array to parametro which is of type uInt32, but still did not work.
Testing the input param with the following values:
param[] = {10,14,10,0,16}
the valorAmostra returned is 0,00117188 when he should be 0,300003.
Can someone help me please?
Solved! Go to Solution.
05-17-2011 01:24 PM
Portuguese:
Olá,
Existe um bug no LabVIEW para esta operação. Este bug deverá ser corrigido em versões futuras. Uma solução para esta situação é utilizar um int32 ao invés de um ulnt32.
Qualquer dúvida por favor entre em contato.
Obrigado.
English:
I investigated the problem you are having, and it turns out that it is a bug that has already been reported and documented. The work around for it is to use int32 rather than uInt32.
Thanks.