Comment trouver TMax sans l'aide de changements

En utilisant UNIQUEMENT

 ! ~ & ^ | +

Comment puis-je savoir si un nombre 32 bits est TMax?

TMax est le maximum, en complément à deux du nombre.

Mes pensées ont été jusqu'à présent:

int isTMax(int x)
{
  int y = 0;

  x = ~x;
  y = x + x;

  return !y;
}

Qui est juste une des nombreuses choses que j'ai en vain ont essayé, mais je ne peux pas penser à une propriété de TMax, qui me donnerait TMax dos. Comme l'ajout de tmax à lui-même devrait être unique par rapport à tous les autres entiers.


Ici, est le problème réel:

/*
 * isTMax - return 1 if x is the maximum, two's complement number,
 *     and 0 return otherwise. 
 *   Legal ops: ! ~ & ^ | +
 *   Max ops: 10
 *   Rating: 1
 */
int isTMax(int x) {
        int y = 0;

  x = ~x;
  y = x + x;

  return !y;
}

int de 32 bits, donc le max signés serait probablement 0x7FFFFFFF

  • Qu'est-ce que TMax? Le maximum de non signé (ou signé) entier?
  • Je pense que vous aurez besoin d'élaborer sur ce que le TMax est.
  • Maximum en complément à deux du nombre. Désolé de ne pas élaborer.
InformationsquelleAutor David | 2011-09-04