phpbar.de logo

Mailinglisten-Archive

[php] Kleines Integer Problem

[php] Kleines Integer Problem

Cyrill Schumacher php_(at)_phpcenter.de
Mon, 15 Oct 2001 12:00:20 +0200


>>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