So finden TMax ohne Verwendung von Schichten

Mit NUR

 ! ~ & ^ | +

Wie kann ich herausfinden, ob ein 32-bit-Zahl ist TMax?

TMax ist der maximal -, zweier-Komplement-Zahl.

Meine Gedanken waren bisher:

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

  x = ~x;
  y = x + x;

  return !y;
}

Ist nur eine der vielen Dinge, die ich haben erfolglos versucht haben, aber ich kann Sie nicht einfach denken, der eine Eigenschaft des TMax, die mir geben würde, TMax zurück. Wie das hinzufügen von tmax zu sich selbst wäre einzigartig im Vergleich zu allen anderen zahlen.


Hier ist das eigentliche problem:

/*
 * 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 ist 32 bit also max unterzeichnet würde wahrscheinlich 0x7FFFFFFF

  • Was ist TMax? Die maximale unsigned (oder signed) integer?
  • Ich denke, Sie brauchen, um auszuführen, was der TMax ist.
  • Maximal zwei-Komplement-Zahl. Sorry für die nicht näher.
InformationsquelleAutor David | 2011-09-04
Schreibe einen Kommentar