Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
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