2015-09-27 16 views
8

Perché a volte i bool vengono definiti "bandiere"? È solo una metafora o c'è qualche ragione storica dietro di esso?Perché i bool vengono a volte chiamati "bandiere"?

+0

Ho sempre immaginato che abbia a che fare con l'innalzamento o l'abbassamento delle bandiere per avviare e fermare il traffico. – Davislor

risposta

6

Le bandiere sono un modo antico per trasmettere informazioni. Una bandiera, se ignoriamo abbassandola a mezz'asta, ha solo due stati: alzati o non alzati. Ad esempio, considera una bandiera bianca: alzarla significa arrendersi. Non aumentarlo, lo stato predefinito, significa che non ti stai arrendendo.

Una variabile booleana, come una bandiera, ha solo due stati: true e false.

4

Flag può essere usato come sostantivo e come verbo: Per contrassegnare può significare notare, segno, segnale di qualcosa

Uno dei primi (ma probabilmente non il primo (Forse questo deriva dall'uso delle bandiere nautiche?)) uso della bandiera termine nella storia del computer può essere trovato nel IBM 1620 dal 1959 (il corsivo è mio):

memoria si accedeva due cifre decimali, allo stesso tempo (coppia cifra pari-dispari per i dati numerici o di una carattere alfanumerico per i dati di testo ). Ciascuna cifra decimale era 6 bit, composto da una parità dispari Vedi bit, un flag di bit, e quattro BCD bit per il valore della cifra nella seguente formato:

CF 8 4 2 1

il bit bandiera ha avuto diversi utilizzi:

  • Nella cifra meno significativa è stato impostato per indicare un numero negativo (magnitudo firmato).
  • E 'stato impostato su mark la cifra più significativa di un numero (wordmark).
  • Nella cifra meno significativa degli indirizzi a 5 cifre è stato impostato per l'indirizzamento indiretto (un'opzione sul 1620 I, standard sul 1620 II). È possibile utilizzare l'indirizzamento a più livelli (è possibile persino inserire la macchina in un ciclo di indirizzamento indiretto infinito). Nelle 3 cifre centrali degli indirizzi a 5 cifre (sul 1620 II) erano impostati per selezionare uno dei 7 registri indice.

Quindi un po 'usato per contrassegnare o indicare qualcosa è stato chiamato bit di bandiera.

Ovviamente l'uso di "flag" in flag fields o registri di stato è quindi del tutto naturale.

Ma una volta stabilita l'associazione tra flag e bit, è anche comprensibile che il loro utilizzo possa diventare scambiabile. E naturalmente questo vale anche per le variabili booleane.

PS: la stessa domanda era già asked, ma sfortunatamente senza risposta.

Problemi correlati