Comment les nombres premiers sont-ils codés dans l'exemple de Knuth de l'ajustement des nombres premiers dans le cache de mémoire?

cs.stackexchange https://cs.stackexchange.com/questions/99433

  •  05-11-2019
  •  | 
  •  

Question

Quelqu'un pourrait-il m'aider à comprendre ce qui se passe ici (en anglais simple)? je pense que $ (k mathbin { &} 63) $ a l'effet de la division modulaire. Est-ce correct? Comment les nombres premiers sont-ils codés / comment puis-je savoir exactement où un nombre commence et se termine en déplaçant mon doigt sur chaque mot 64 bits?

2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, ...


L'objectif est de faire] un tableau de tous les nombres premiers étranges moins de 1024, afin que nous puissions facilement décider de la primalité d'un petit entier.

  1. La densité ultime du package est obtenue lorsque nous avons des éléments 1 bits.
  2. Nous pouvons les entasser en un mot 64 bits.
  3. Seuls les numéros de 64 bits sont nécessaires.
  4. Pour tester si 2k $ + 1 $ est prime, pour 0 $ ≤ k <512 $, calculez simplement ce qui suit dans un registre 64 bits, et voyez si le bit le plus à gauche est 1:

$$ p _ { lfloor k / 64 rfloor} << (k mathbin { &} 63) $$

P est au format grand-endian. Q est au format Little-Endan.

P0 —0111011011010011001011010010011001011001010010001011011010000001, 
P1 —0100110000110010010100100110000110110000010000010110100110000100, 
P2 -1001001100101100001000000101101000000100100001101001000100100101, 
P3 -0010001010001000011000011001010010001011010000010001010001010010, 
P4 —0000110000000010010000100100110010000100100110010010110000010000, 
P5 -1101001001100000101001000100001000100001000100100101000100101000, 
P6 —1010000001000010000011000011011000010000001011010000001011010000, 
P7 -0000010100010000100010100100100000010100100100010010000010100110.

Pour Little-Endan, $$ q _ { lfloor k / 64 rfloor} >> (k mathbin { &} 63) $$

Et regardez le morceau le plus à droite du résultat.

Q0 — 1000000101101101000100101001101001100100101101001100101101101110, 
Q1 - 0010000110010110100000100000110110000110010010100100110000110010, 
Q2 - 1010010010001001011000010010000001011010000001000011010011001001, 
Q3 - 0100101000101000100000101101000100101001100001100001000101000100, 
Q4 — 0000100000110100100110010010000100110010010000100100000000110000, 
Q5 — 0001010010001010010010001000010001000010001001010000011001001011, 
Q6 — 0000101101000000101101000000100001101100001100000100001000000101, 
Q7 — 0110010100000100100010010010100000010010010100010000100010100000;

- L'art de la programmation informatique. Volume 4, fascicule 1. Tricks et techniques de bit. Diagrammes de décision binaire. p.5

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à cs.stackexchange
scroll top