Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di Kilin
    Registrato dal
    Mar 2003
    Messaggi
    453

    [C++] dubbi su codifiche binarie

    Ciao a tutti...

    stavo facendo delle prove con le codifiche binarie, in particolare stavo cercando di fare una funzione che fa il complemento di un numero (so che esiste già, era una prova )

    In pratica lavorando con gli altri operatori bit a bit ho trovato un modo, ma il risultato non mi quadra. Il procedimento è questo: recupero il numero di bit su cui è rappresentato il numero con un sizeof sul suo tipo. Dopo di che mi costruisco una codifica ad hoc che sfrutto per fare operazioni bit a bit col mio numero, per ottenere il complemento.

    Complementando il numero '2' con la mia funzione però ottengo il numero '2147483645' invece di ottenere '-3', risultato che ho con l'operatore complemento del c++..

    Eppure con un programma che dato un numero stampa le codifiche binarie la codifica del numerone che ottengo mi pare effettivamente il giusto complemento di quella di '2'..Evidentemente sbaglio qualcosa, l'idea (vaga) che mi son fatto è che la codifica che creo viene interpretata come numero positivo invece che come negativo, ma non capisco bene perchè..

    Sapete dirmi dove sbaglio? Credo di essere vicino alla soluzione ma mi sfugge qualcosa...

    grazie..

  2. #2
    Intendi questo ?
    codice:
    int number = 3;
    
    printf("%d\n", number);
    
    number = (~number) + 1;
    
    printf("%d\n", number);

  3. #3
    Utente di HTML.it L'avatar di Kilin
    Registrato dal
    Mar 2003
    Messaggi
    453
    No dunque ho trovato....

    il problema era che per ottenere la codifica con tutti bit a '1' sbagliavo, prendevo il numero positivo più grande che si puo' rappresentare su quei bit, ma a quel numero corrisponde una codifica che è 0111111111...1, (perchè se avesse anche il primo bit a 1sarebbe negativo in complemento a 2)... Adesso ho risolto, per ottenere la codifica di tutti 1 complemento semplicemente lo zero e tutto fila

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.