2010-05-28 20 views

risposta

16

Attualmente la maggior parte dei computer utilizza two's complement per interi con segno, ma può variare a seconda dell'architettura hardware, del linguaggio di programmazione o di altri problemi specifici della piattaforma.

Per una rappresentazione in complemento a due, il più significativo ("sinistra") bit è indicato come il bit di segno , e sarà impostato per un intero negativo e chiaro per un numero intero non negativo. Tuttavia, è più di una semplice "bandiera". Vedere lo Wikipedia article per ulteriori informazioni.

+0

Quindi il bit frontale sarà 1 per il negativo e 0 per il positivo? Che dire di 0? – User

+0

Lo zero è rappresentato da tutti i bit zero. –

4

Di solito è un doppio complemento.

1
0xFFFFFFFF = -1 
0xFFFFFFFE = -2 
0xFFFFFFFD = -3 
... 

& così via

0

Il bit più significativo (ultimo bit a sinistra) è impostato per i numeri negativi.

+1

Intendi "prima punta a sinistra"? –

+0

Che ne dici di "primo bit da sinistra" o "ultimo bit da destra". :) –

3

Dalla serie C99:

Per tipi interi con segno, i bit del rappresentazione dell'oggetto deve essere divisi in tre gruppi: i bit di valore, bit di riempimento, e il bit di segno. Lì non devono essere necessariamente bit di riempimento; lì deve essere esattamente un bit di segno. Ogni bit che è un po valore deve avere lo stesso valore come lo stesso bit nella rappresentazione oggetto della corrispondente tipo senza segno (se ci sono M valore bit del tipo firmata e N nel tipo senza segno quindi M = N). Se il bit di segno è zero, è necessario che non influenzi il valore risultante. Se il bit segno è uno, il valore deve essere modificato in uno dei seguenti modi:

- il valore corrispondente con il segno bit 0 viene negato (segno e grandezza);

- il bit di segno ha il valore - (2N) (complemento a due);

- il bit di segno ha il valore - (2N - 1) (un complemento).

Quale di queste applica è implementazione definita, come è se il valore di bit di segno 1 e tutti bit zero (per i primi due), o con bit di segno e ogni valore bit 1 (per complemento di quelli), è una rappresentazione di trappola o un valore normale. In il caso di segno e grandezza e complemento di , se questa rappresentazione è un valore normale è chiamato zero negativo.

0

Penso che la risposta è 0110, preceduta da 1 ripetuto 28 volte, quindi, sembra che:

1111 1111 1111 1111 1111 1111 1111 0110;

Passi:

  1. rappresentazione bit per 10 è:

    0000 0000 0000 0000 0000 0000 0000 1010;

  2. 0->1 e 1->0 per tutti i bit:

    1111 1111 1111 1111 1111 1111 1111 0101;

  3. aggiungere 1 al l'ultimo bit, e propagare al 'avanti, fatto!

    1111 1111 1111 1111 1111 1111 1111 0110;

===

È possibile verificare con l'aggiunta con 10, e si otterrà 0 per tutti i bit. Come accennato in precedenza, è basato su 2 e segue il complemento a due.

Problemi correlati