Multiplizieren Sie in C-Bits mit 3 und dividieren Sie durch 16

Ein Freund von mir hatte diese Rätsel und das ist eines, das mir entgeht. Hier ist das Problem, Sie erhalten eine Zahl und Sie möchten diese Zahl mal 3 und geteilt durch 16 auf 0 zurückgeben. Sollte einfach sein. Der Fang? Sie können nur die! ~ & ^ | + << >> Operatoren und von ihnen nur eine Kombination von 12.

int mult(int x){
    //some code here...
return y;
}

Mein Versuch war:

    int hold = x + x + x;
    int hold1 = 8;
    hold1 = hold1 & hold;
    hold1 = hold1 >> 3;
    hold = hold >> 4;
    hold = hold + hold1;
    return hold;

Aber das scheint nicht zu funktionieren. Ich glaube, ich habe ein Problem damit, Teile zu verlieren, aber es scheint mir nicht möglich zu sein, sie zu retten. Eine andere Perspektive wäre schön. Nur zum Hinzufügen können Sie auch nur Variablen vom Typ int und keine Schleifen verwenden, wenn Anweisungen oder Funktionsaufrufe verwendet werden dürfen.

Im Moment habe ich die Nummer 0xfffffff. Es soll 0x2ffffff zurückgeben, aber es gibt 0x3000000 zurück.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage