K & R Übung verstehen 2-6:K & R Übung 2-6: Verwenden Sie keine Eingabe/Ausgabe
Schreiben Sie eine Funktion
setbits(x,p,n,y)
diex
mit denn
Bits zurückgibt, die auf der äußersten rechtenn
an Positionp
Satz beginnen Bits vony
, die anderen Bits unverändert lassen.
Hier ist meine Interpretation eines Beispiels Eingabe/Ausgabe:
unsigned x = 315;
int p = 2;
int n = 3;
unsigned y = 9;
printf("%d\n", setbits(x, p, n, y)); // 295
Und hier ist meine Argumentation.
3 Bits an der Position 2 für 315:
0000 0001 0011 1011
- --
3 am weitesten rechts stehenden Bits, die für 9:
0000 0000 0000 1001
---
Set 3 am weitesten rechts stehenden Bits, die für 9 bis die 3 Bits in 2 für 315 => 295 Ausgang :
0000 0001 0010 0111
- --
ich einige Code geschrieben und wollte es dann gegen andere Lösungen prüfen, for example. Die zwei, die ich online fand, geben beide eine andere Antwort, 313:
0000 0001 0011 1001
--- ???
Was vermisse ich?
Die Indexierung beginnt in C bei Null. Vermutlich ist "Position 2" das dritte Bit. – EOF
Ohne [mcve] ist es nicht möglich, Ihren Code zu diagnostizieren. – Olaf
Okay, ich habe mich gefragt und beide Wege versucht. Ich habe meine Frage bearbeitet, um die korrekte Positionierung wiederzugeben, aber für mich ergibt das immer noch keinen Sinn. – gwg