Mailinglisten-Archive |
>>ist es möglich den Wert von "summe" zu speichern, um damit vernünftig
>>weiter zurechnen ?
>Du meinst sicherlich die Möglichkeit unter SQL mit den Werten weiter
>zu arbeiten!?
>Dann schau mal hier nach!
Nein das meinte ich nicht. Mir geht es um dasselbe wie unter
Unix die Dateirechte, also die Summe von Potenzen:
2^0 = 1 - execute
2^1 = 2 - write
2^2 = 4 - read
ergibt in der summe 7 also maximale rechte oder 6 für nur rw.
über if( 6 & 4 = 4 ) { "you have read right" }
Zitat:
"Wenn ich das richitg verstanden habe willst du ein Bitfield machen, wobei
jedes gesetzte Bit die Zugehörigkeit zu der entsprechenden Gruppe
repräsentiert. "
Da ich aber keine Rechte habe ;-) sondern nur Gruppennummern
möchte ich diese Gruppennummerna auch genauso Verknüpfen:
2^351 + 2^3
Der Sinn ist also eine Reihe von Int-Zahlen ( >= 0) zu einer Summe
zusammenzufassen und durch einen Algorithmus festzustellen
ob Zahl X in der Summe enthalten ist !
checksumme(int zahl, int summe);
wenn Zahl in der Summe enthalten ist, wird true oder die Zahl
zurückgeliefert!
Durch die logarithmischen Summe würde es ja gehen, aber leider nur zu gross
..
+--------+----------------------------------------------------------------+-
--------------+
| nav_id | exp |
nav_name |
+--------+----------------------------------------------------------------+-
--------------+
| 1 | 2.000000 |
ROOT |
| 2 | 4.000000 |
Microtek |
| 3 | 8.000000 |
Avision |
| 4 | 16.000000 |
Epson |
| 5 | 32.000000 |
HP |
| 6 | 64.000000 |
Umax |
| 7 | 128.000000 |
Ricoh |
| 19 | 524288.000000 |
Heidelberg |
| 20 | 1048576.000000 |
Agfa |
| 55 | 36028797018963968.000000 |
Nikon |
| 56 | 72057594037927936.000000 |
Minolta |
| 66 | 73786976294838206464.000000 |
Lasersoft |
| 75 | 37778931862957161709568.000000 |
Canon |
| 89 | 618970019642690137449562112.000000 |
Scanservice |
| 106 | 81129638414606681695789005144064.000000 |
Polaroid |
| 111 | 2596148429267413814265248164610048.000000 |
Software |
| 117 | 166153499473114484112975882535043072.000000 |
Scansoft |
| 119 | 664613997892457936451903530140172288.000000 |
ELO |
+--------+----------------------------------------------------------------+-
--------------+
22 rows in set (0.01 sec)
die letzte Zahl ist 2 hoch 119 - (2^119)
Ein Möglichkeit wäre die Wurzel der n-ten Dimension zu ziehen und so
die Zahlen kleiner zubekommen, aber dafür muss man den Dezimalbereich auf
min. > 14 stellen ausweiten.
kiri
php::bar PHP Wiki - Listenarchive