hab auch gebastelt, komme aber mit meiner lösung zu spät. ausserdem ist sie nicht so elegant, und ob es funktioniert, konnte ich nur mit den wiki-beispielen testen.. -.-
Code:
#include <stdio.h>
#include <conio.h> // nur fuer getch
int main(void)
{
unsigned int i,pos=1,ergebnis=0,x=15;
printf("Wert x=%d wird aufgeloest:\n",x);
for(i=0;i<32;i++)
{
int v=((x&(1<<(31-i)))<<1);
if(v)
{
v--;
if(pos)ergebnis+=v;
else ergebnis-=v;
printf("%d=%d\n",i,v);
pos=!pos;
}
}
printf("ergebnis:%d\n",ergebnis);
getch();
return 0;
}
EDIT @sprinter-code:
binär 1111 ist doch 15, da bekommst du 8 raus, in der Wiki steht 10..
stimmt die Wiki nicht oder dein code? *fragend guck*
Lesezeichen