Ahoj, mám takový problém pořád se v tom nějak motám a nevím co stím...
mám definici
unsigned int i;
je v ní uložené libovolné číslo...
když chci znegovat bity 1 a 15 a ostatní nezměnit jde to udělat následovně... ?
i~((i&(1<<1))&&(i&((1<<15)));
a jak bych zjistil jestli je číslo záporné? (můžu použít ale jen bitové operace)
děkuji
Offline
mělo by to fungovat snad takto:
unsigned int i;
if((i>>31 & 0x1) == 1)
printf("zaporne\n");
else
printf("kladne\n");
Počítá to ale s tím, že int bude mít 32bitů. Posuneš tedy bity v čísle; MSB se tak dostane na 1. pozici a provedeš AND operaci s číslem jedna ("0x1"). Ta bude pravdivá jen jestliže bylo v obout číslech na 1. pozici číslice "1".
Offline