Hallo, weiß jmd. wie man diesen Ausdruck noch weiter vereinfachen kann so dass er nicht soviele Steps im Assembler Code beansprucht?
1 | for(z=0; z<8; z++) |
2 | {
|
3 | for(j=0; j<array_nbr; j++) |
4 | out+= ((array[j][5] << (j)) & (1 << (j + z))) >> z; |
5 | |
6 | output[(z+1)] = out; |
7 | out = 0; |
8 | }
|
In der Variable array befinden sich Hex-Zahlen - z.B. 0x45; Ziel ist es in der Variable output die einzelnen bits nacheinander gespeichert zu haben: ein kleines bsp: array[1][1] = 0x45 = 01000101 -> dann soll im output output[0] = 1 output[1] = 0 output[2] = 1 output[3] = 0 output[4] = 0 output[5] = 0 output[6] = 1 output[7] = 0 -> insgesamt hat das array[16][] 16 relevante Werte: mit array[1][1] wird die erste Bitstelle von output[] belegt, mit array[2][1] soll die zweite Bitstelle usw. belegt werden. -> d.h. im output[0] hab ich von allen Werten von array[1][1] bis array[16][1] die ersten Bits gespeichert! Gruß Bernd