[CodeBlocks] Non funziona il not bitwise (~)

di il
5 risposte

[CodeBlocks] Non funziona il not bitwise (~)

Ciao a tutti.
Ho riscontrato problemi con gli operatori bit a bit in codeblocks. Ho provato a cercare qualche mio errore sia di sintassi che logico,ma (almeno così pare) non ce ne sono... Ho cercato qualcosa anche su internet ma senza risultati.
L'istruzione in esame è molto semplice:
#include <stdio.h>
#include <stdlib.h>

void rc2(int n,int x)
{
    if(x<0)
        {
            x=(~x)|1; /*non funzionano*/
        }
    stamp(n,x);
}
Grazie.

5 Risposte

  • Re: [CodeBlocks] Non funziona il not bitwise (~)

    Non funziona in che senso? Con quali valori e risultati hai provato?
  • Re: [CodeBlocks] Non funziona il not bitwise (~)

    Ciao oregon, scusa se non l'ho specificato,ma non funziona nel senso che non apporta nessuna modifica. Ho anche provato a forzarlo eliminando l'if ma il risultato è sempre lo stesso,ovvero l'int non complementato. Inoltre,pensando che ci fosse qualche problema con il tipo di dato, ho provato anche con il char,ma con lo stesso risultato..
  • Re: [CodeBlocks] Non funziona il not bitwise (~)

    Scusa puoi indicare esattamente quali valori hai provato e con quali risultati?
  • Re: [CodeBlocks] Non funziona il not bitwise (~)

    - Il programma chiede di inserire un intero per poi trasformarlo in base2 nella rappresentazione per complemento a 2 e per biased su 4 (&n) bit;
    - Gli interi inseriti da me sono 5 e -5 (&x);
    - Nel caso del 5 (e dei numeri positivi) la stampa è corretta in entrambe le rappresentazioni: rc2=0101, biased=1100;
    - Nel caso del -5(e altri numeri negativi) la stampa è corretta solo per la rappresentazione in biased:
    rc2=0101, biased=0010;

    rc2 dovrebbe essere =1011,ovvero, il 5 complementato e addizionato a 1.
    Era questo quello che volevi sapere?
  • Re: [CodeBlocks] Non funziona il not bitwise (~)

    Sì ma per il c2, come hai detto, devi addizionare 1 e quindi scrivere

    x=(~x)+1;

    non come hai scritto tu
Devi accedere o registrarti per scrivere nel forum
5 risposte