Question

Ceci est pour MSVC

#define Get64B(hi, lo) ((((__int64)(hi)) << 32) | (unsigned int)(lo))

Plus précisément, quel est le rôle de "l'opérateur < <" ?

Merci de votre aide

Était-ce utile?

La solution

< < est l'opérateur de l'équipe de gauche. Cette macro est destinée à créer une valeur de 64 bits à partir de deux valeurs de 32 bits, en utilisant le premier argument comme 32 bits supérieurs et le second argument comme les 32 bits inférieurs de la nouvelle valeur.

Autres conseils

Il faut deux entiers de 32 bits et renvoie un entier de 64 bits, le premier paramètre étant les 32 bits hauts et le second les 32 bits bas.

< < est l'opérateur de l'équipe de gauche. Il prend les 32 bits hauts, les décale, puis les OR qui résultent avec les bits bas.

opérateur < < est un opérateur de décalage à gauche binaire. Cela décale la variable int64 de 32 bits.

AakashM est correct. Il peut être plus facile de comprendre l’écriture en tant que méthode

__int64 Get64B(__int32 hi, __int32 lo) {
  __int64 combined = hi;
  combined = combined << 32;  // Shift the value 32 bits left.  Combined
                              // now holds all of hi on the left 32 bits
  combined = combined | lo;   // Low 32 bits now equal to lo
  return combined;
}

Ce bit décale la valeur hi de 32 bits vers la gauche.

C'est l'opérateur de décalage à gauche, et sa signification standard (pour les types de nombres) est de décaler les bits vers la gauche

int a = 1;
int b = a << 3; // b is now 1000 binary, 8 decimal

Le code crée un nombre de 64 bits sur deux nombres de 32 bits.

Cela retourne un int de 64 bits utilisant deux int de 32 bits, l'un est utilisé comme octets d'ordre de hi et le second comme octets d'ordre inférieur.

salut < < 32 convertit l’entier en octets de poids fort de l’int 64 bits. Exemple:

Get64B (11111111111111110000000000000000, 0000000000000000111111111111111)

renvoie 1111111111111111000000000000000000000000000000001111111111111111111

Parce que 11111111111111110000000000000000 < < 32 déclarations

1111111111111111000000000000000000000000000000000000000000000000

Retourne un entier 64 bits de deux entiers 8,16,32 ou 64 bits. C'est plus sûr que: hi & Lt; & Lt; 32 | lo

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top