Kun annan bit mask arvon 84 niin bitti arvot 4,16,64 asettuvat automaattisesti ykkösiksi.Jos taas bti mask arvo on 12 niin bitti arvot 4 ja 8 asettuvat ykkösiksi. Kuinka tämän voisi tehdä ?. (makrolla tai funktiolla)
1 0
2 0
4 1
8 0
16 1
32 0
64 1
=============
bit mask 84
1 0
2 0
4 1
8 1
16 0
32 0
64 0
=============
bit mask 12
1 0
2 0
4 1
8 0
16 1
32 0
64 1
=============
bit mask 84
1 0
2 0
4 1
8 1
16 0
32 0
64 0
=============
bit mask 12
Vastaukset 3
Vanhimmat
Jos haluat saada nuo bitit nimenomaan kunkin omaan soluunsa, niin sitten ei helppo ratkaisu, eli DEC2BIN()-funktio toimi. Kyhäsin tuota rivitystä varten ainakin tietylle bittimäärälle toimivan hätäratkaisun.
Bittimaski on solussa A1 ja tarkastellaan kahdeksanbittisiä lukuja. Soluun A2 tulee 8. bitti (128), A3:een 7. bitti (64) jne. soluun A9 saakka (1. bitti, 1).
Soluun A2 kaava LEFT( DEC2BIN(A1;8) ;1). DEC2BIN(A1;8) muuttaa solun A1 arvon, esim. 84, 8-bittiseksi binääriluvuksi (01010100). LEFT() antaa siitä ensimmäisenä vasemmalla olevan merkin, nollan.
Soluun A3 kaava RIGHT( LEFT( DEC2BIN(A1;8) ;2)). Muuten sama kuin edellinen, mutta nyt LEFT( DEC2BIN(A1;8) ;2) antaa kaksi ensimmäistä merkkiä (01) tuosta binääriluvusta, joista RIGHT(...) poimii oikeanpuoleisimman (1).
Soluihin A4-A9 sama kaava kuin A3:een, mutta tuo viimeinen numero, LEFT:n toinen argumentti juoksee 3:sta 8:aan.
Jos bittimäärä on joku muu, tarvitsee muuttaa tuota DEC2BIN-funktion toista argumenttia ja luonnollisesti myös rivien määriä. Toivottavasti tämä auttaa.
Soluissa A1:A7 1,2,4,8,16,32,64
Solussa C5 bit mask luku
Soluun B1 kaava
=JOS(A1 (TULOJEN.SUMMA((B2:$B$9=1)*(A2:$A$9>0);A2:$A$9))
kiitos upeasta/nopeasta vastauksesta "paavali50".
Nyt homma toimii.