Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: [C++] unsigned

  1. #1
    Utente di HTML.it L'avatar di daneel
    Registrato dal
    Oct 2002
    Messaggi
    229

    [C++] unsigned

    Cosa significa (unsigned) in questo esempio di passaggio del parametro a srand (la funzione time, inclusa in time.h, restituisce l'ora di sistema in secondi da (00:00:00), January 1, 1970):
    codice:
    srand( (unsigned)time( NULL ) );

  2. #2
    Utente di HTML.it L'avatar di Zalex
    Registrato dal
    Aug 2001
    Messaggi
    357
    senza segno......

  3. #3
    Utente di HTML.it L'avatar di Zalex
    Registrato dal
    Aug 2001
    Messaggi
    357
    forse sono stato troppo vago.....
    allora i tipi interi possono essere dotati o privi di segno(signed o unsigned).
    Se un tipo ha segno, il bit piu a sinistra rappresenta il segno(se 1 negativo,se 0 positivo);i rimanenti bit il valore;
    Se un tipo non ha segno tutti i bit rappresentano il valore;
    esempio:
    un tipo con otto bit(ad esempio un char)e con segno puo rappresentare valori da -128 a 127,invece un tipo sempre con otto bit, ma senza segno puo rappresentare valori da 0 a 255

    in generale:
    i tipi signed con n bit possono rappresentare valori da
    -2elevato alla n-1 a (2elevato alla n-1)-1

    i tipi unsigned con n bit possono rappresentare valori da
    0 a (2elevato alla n)-1


    ciao

  4. #4
    Originariamente inviato da Zalex
    allora i tipi interi possono essere dotati o privi di segno(signed o unsigned).
    Se un tipo ha segno, il bit piu a sinistra rappresenta il segno(se 1 negativo,se 0 positivo);i rimanenti bit il valore;
    No. Nel caso di numeri con segno la notazione usata è la complemento a due.
    - "Boy, the food at this place is really terrible."
    - "Yeah, I know, and such ... small portions."

  5. #5
    Utente bannato
    Registrato dal
    Jan 2002
    Messaggi
    852
    in pratica raddoppi il range di una variabile.

  6. #6
    Originariamente inviato da debbelandia
    in pratica raddoppi il range di una variabile.
    No.
    - "Boy, the food at this place is really terrible."
    - "Yeah, I know, and such ... small portions."

  7. #7
    Utente di HTML.it L'avatar di Zalex
    Registrato dal
    Aug 2001
    Messaggi
    357
    Originariamente inviato da Dwenegar
    No. Nel caso di numeri con segno la notazione usata è la complemento a due.

    e' evidente che non sai(o non ti ricordi ) cos'e' la rappresentazione in complemento a due!!!!!!!!!!!!!
    ti rinfresco un po le idee:
    nella suddetta rappresentazione gli interi positivi da 0 a (2elevato alla n-1)-1 si rappresentano normalmente,invece un numero negativo k
    (compreso tra -2elevato alla n-1 e -1) viene rappresentato come k+2elevato alla n;ne segue la rappresentazione in complemento a due di un numero negativo ha sempre 1 nel bit piu a sinista;
    ti do anche la dimostrazione formale va'!

    fatto:i numeri negativi rappresentabili sono in (-2elevato alla n-1,-1);
    sia k numero piu' piccolo appartenente a tale intervallo(quindi -2elevato alla n-1);
    sommando a k 2elevato alla n,otteniamo -2elevato alla n-1 + 2elevato alla n=2elevato alla n-1;
    2elevato alla n-1 ha necessariamente un 1 nel bit piu' a sinistra,xche' un teorema dice che un numero binario con n bit rappresenta un valore maggiore di (2elevato alla n-1)-1 se e solo se il suo bit piu a sinistra e' 1!!!
    A maggior ragione avranno il bit piu a sinistra uguale a 1 tutti i numeri appartenenti allo stesso intervallo di k e maggiori di k,quindi tutti i numeri negativi.


    ...ricapitolando i numeri positivi hanno zero nel bit piu a sinistra e i numeri negativi hanno 1 in pos piu a sinistra

    ciao

  8. #8
    Utente di HTML.it L'avatar di daneel
    Registrato dal
    Oct 2002
    Messaggi
    229
    Cosa succeda al dato durante una conversione ad unsigned, come nel caso che ho riportato sopra?

  9. #9
    Originariamente inviato da Zalex
    e' evidente che non sai(o non ti ricordi ) cos'e' la rappresentazione in complemento a due!!!!!!!!!!!!!
    Ricordo benissimo cos'è la rappresentazione in complemento a due. Ma tu hai scritto:
    ]Originariamente inviato da Zalex
    ... il bit piu a sinistra rappresenta il segno(se 1 negativo,se 0 positivo);i rimanenti bit il valore...
    che è la descrizione della notazione in segno e modulo (ovviamente io ho inteso valore come modulo e non penso di aver sbagliato).
    - "Boy, the food at this place is really terrible."
    - "Yeah, I know, and such ... small portions."

  10. #10
    Utente di HTML.it L'avatar di Zalex
    Registrato dal
    Aug 2001
    Messaggi
    357
    viene interpretato come ci si aspetta, cioe' come un numero senza segno!
    con una dichiarazione come int x; x ha segno!quindi e' legale per esempio assegnare a x il valore -1;la sua rappresentazione in binario(in complemento a due) sara di 32 bit tuti a 1;
    quindi se provi a stampare x ottieni -1;

    se casti x a un int senza segno con (unsigned)x, sara' interpretato come un numero senza segno, quindi non varra' piu' -1, ma (2elevato alla 32)-1

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.