Hallo Ik wil weten hoe het mogelijk is om een hexadecimale negatieve waarde om te zetten (om gemakkelijk te vullen) tot decimaal, gemakkelijk zonder hexadecimaal naar binair te converteren en vervolgens elk bit te vermenigvuldigen met een vermogen van 2 en alle waarde om te krijgen Het resultaat, het kost te veel tijd:
Voorbeeld van nummer (32 bits): 0xFFFFFE58
Dus hoe kan ik het doen?
Antwoord 1, Autoriteit 100%
zonder een computer te gebruiken, kunt u deze als volgt berekenen:
0xFFFF FE58 = - 0x1A8 = -(1 * 16² + 10 * 16 + 8) = -(256 + 160 + 8) = -424
0xFFFF FE58
is een negatief getal in de aanvulling van 2. Om de absolute waarde te krijgen, moet je alle bits omkeren en 1 in binair toevoegen. U kunt dit nummer ook aftrekken van het eerste nummer buiten bereik (0x1 0000 0000)
0x100000000
-0x0FFFFFE58
=
0x0000001A8
Nu weten we dat uw nummer -0x1A8
is. Nu moet u de cijfers vermenigvuldigd met hun plaatswaarde toevoegen. 8 * 16 ^ 0 + A (dat is 10) * 16 ^ 1 + 1 * 16 ^ 2 = 424. Dus de decimale waarde van uw nummer is -424.
Antwoord 2
Maak een berekening op het positieve nummer en zet vervolgens naar het negatieve met de aanvulling van twee.
Zie hier uitleg voor een positieve conversie van Hexa naar Decimal:
http://www.permadi.com/tutorial/numhextodec/
eigenlijk:
- Krijg het meest cijfer van het HEX-nummer, bel dit cijfer aan de stroom.
- Maak een variabele, laten we het noemen. Stel de waarde in op 0.
- Vermenigvuldig het huidige cijfer met (16 ^ Power), bewaar het resultaat.
- Vermogen van 1.
- Stel de stroomdigitaliseer in het vorige cijfer van het HEX-nummer.
- Herhaal van stap 3 totdat alle cijfers zijn vermenigvuldigd.
- som het resultaat van stap 3 om het antwoordnummer te krijgen.