[PHP] bitwise check maar dan 64 bits

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Wat is de snelste manier om de bitwise operator & ook te gebruiken op >32bits getallen.

momenteel probeer ik dit door er een binaire string van te maken en de juiste posities te checken, maar dit moet veel efficienter kunnen.
Iemand een betere oplossing?

Acties:
  • 0 Henk 'm!

  • eamelink
  • Registratie: Juni 2001
  • Niet online

eamelink

Droptikkels

Ik heb geen idee, maar ik wil het wel weten, want ik zat vandaag ook met het probleem dat ik bitwise moet checken op 260 bits integers... Ik heb er nog niet over nagedacht, dat ik ga vanavond doen ( Het is weekend he :p )

Acties:
  • 0 Henk 'm!

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
gewoon de getallen in 32 bits verdelen en in arrays zetten? dus bv:
PHP:
1
2
3
4
5
6
$a = array(...);
$b = array(...);
$c = array();

for ($i = 0; $i < count($a); $i++)
    $c[$i] = $a[$i] & $b[$i];

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Sorry, ik vat je effe niet :)

Wil je nou de decimale getal in bloks van 32bits verdelen?

Acties:
  • 0 Henk 'm!

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Stel er passen maar 8 bits in een int, maar je wilt met getallen van 16 bits werken. Bijvoorbeeld 1234 & 5678. Binair is dat 00000100 11010010 & 00010110 00101110. Dan krijg je:
code:
1
2
3
4
00000100 11010010 
00010110 00101110
----------------- &
00000100 00000010 = 1026

00000100 = 4, 11010010 = 210, 00010110 = 22 en 00101110 = 46, dus $a en $b krijgen de volgende waarden:
PHP:
1
2
$a = array(4, 210); // 4 * 256 + 210 = 1234
$b = array(22, 46); // 22 * 256 + 46 = 5678

$c wordt dan array(4 & 22, 210 & 46) = array(4, 2) betekent 4 * 256 + 2 = 1026.

Snappie ? :)

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16-09 09:15

Janoz

Moderator Devschuur®

!litemod

Nou, gewoon de 32 lsb's in het ene en de 32 msb's in het andere array element. Een andere (snelle) manier is in php niet echt mogelijk omdat het geen gebruik maakt van 64-bit getallen. Je kunt mischien nog wel een 'grote getallen lib' vinden voor php, maar die zal van precies hetzelfde principe gebruik maken.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Thnx! Het lampje is eindelijk gaan branden :*)

Maar wat is de truck om van 1234 naar 4 en 210.

Die 210=1234%256, maar die 4?

Acties:
  • 0 Henk 'm!

  • Twilight Burn
  • Registratie: Juni 2000
  • Laatst online: 20-04 22:01
1234 div 256 = 4
div is delen en dan de rest weg te laten.. (kweet niet of de div functie in php zit)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Twilight Burn schreef op 17 November 2002 @ 18:46:
1234 div 256 = 4
div is delen en dan de rest weg te laten.. (kweet niet of de div functie in php zit)
verdomme, dat ik daar zelf niet ff op kwam 8)7

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Twilight Burn schreef op 17 November 2002 @ 18:46:
(kweet niet of de div functie in php zit)

(int)(1234/256) :+
Pagina: 1