Avatar billede soes Nybegynder
15. december 2004 - 14:09 Der er 7 kommentarer og
1 løsning

Notation med en hex værdi

Jeg arbejder med noget hashtabel, og har søgt inspiration i noget andet kode. Her er jeg stødt på en notation jeg ikke har set før, så det ville være rart hvis der er en som lige kan forklare hvad det går ud. Linien er her:

int hash = key.hashCode();
int index = (hash & 0x7FFFFFFF) % tab.length; <- Denne linie

hvis du kan forklare hvad der menes med hash & 0x7FFFFFFF ville det bare være super.
Avatar billede arne_v Ekspert
15. december 2004 - 14:13 #1
0x7FFFFFFF er en integer konstant angivet i hexadecimal format

lige præcis denne konstant er en 0 bit og 31 1 bits

& er binær AND

& 0x7FFFFFFF gør at man beholder de laveste 31 bit og de højeste bliver 0
Avatar billede arne_v Ekspert
15. december 2004 - 14:14 #2
Avatar billede jakoba Nybegynder
15. december 2004 - 14:16 #3
0x forrest fortæller at resten skal læses som hexadecimale tal

&  er bitwise AND

dvs all bit i hash der ikke også er sat i  7FFFFFFF  bliver sat til nul

det der sker er at sign bit i has bliver sat til nul hvis den er sat, og ikke ændres hvis den allerede er 0.

mvh JakobA
Avatar billede jakoba Nybegynder
15. december 2004 - 14:16 #4
Øv, undskyld arne :)
Avatar billede arne_v Ekspert
15. december 2004 - 15:54 #5
:-)
Avatar billede soes Nybegynder
15. december 2004 - 23:22 #6
Det vil sige at den måde hvorpå man opnår en spredning i hashtabellen er ved at bruge MAD medtode, eller er jeg gået helt galt.


*MAD er betegenlsen som bliver brugt i min lærer bog, så vidt jeg husker står den for noget med: Multiplication And Division?

arne_v: Da du var den første der svarede så synes jeg at du er mest berettiget til at modtage pointene hvis du har lyst til dem. Ellers går de til jakoba.

Venter med at fordele dem til jeg høre din mening.
Avatar billede arne_v Ekspert
15. december 2004 - 23:24 #7
Hvis du kalder modulus for "Multiplication And Division" så ja.
Avatar billede arne_v Ekspert
15. december 2004 - 23:24 #8
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester