[Teoria] Operatori bitwise e aritmetici

oleg.fresi
Potreste dirmi se esiste qualche relazione con gli operatori bitwise and, or, xor, not con gli operatori aritemtici +, -, *, /?

Risposte
apatriarca
Che cosa intendi dire con relazione tra di essi? Se è possibile implementare gli uni usando gli altri? Altro?

oleg.fresi
Esatto, sapendo che cos'è lo xor e l'elemento circuitale, come costruisco un circuito che faccia la somma tra due numeri?

vict85
Se avessi numeri ad un solo bit e due bit per la risposta, come faresti?

apatriarca
L'argomento è abbastanza vasto. Somma e sottrazione sono in un certo senso implementati insieme calcolando il complemento a due del secondo input (che è uguale a negare tutti i bit e sommare 1). Puoi iniziare a guardare per esempio su Wikipedia. Per la moltiplicazione il metodo più semplice consiste nell'usare la somma e degli shift come descritto in questa pagina. La divisione credo sia implementata usando l'algoritmo per la divisione che ti viene insegnata a scuola per dividere i numeri (ma con valori decimali) [url=http://mathforum.org/library/drmath/view/55944.html]qui viene descritto un po'[url]. Ovviamente per ognuno di questi esistono probabilmente algoritmi migliori. E mi sono limitato ai numeri interi, per i numeri in virgola mobile l'implementazione è leggermente diversa perché c'è anche l'esponente da prendere in considerazione.

oleg.fresi
Ok, perfetto, grazie per la spiegazione! Ma aldilà di questo, questi operatori sono legari a quelli aritmetici. Per esempio il * è lagto al + come il / è legato al -. L'and o l'or sono legati al + al - o al * e /?

vict85
Non c'è nessun legame tra di loro. Semplicemente puoi usare gli operatori bitwise per simulare (in maniera piuttosto imperfetta[nota]Un circuito elettrico può applicare diversi operatori sui singoli bit.[/nota]) quello che i circuiti elettrici fanno al loro interno. Pertanto, possono essere usate per ri-implementare alcune istruzioni. Nota che farlo è molto più lento di chiamare direttamente l'istruzione corrispondente.

apatriarca
Quello che stai chiedendo non è chiaro. Che significa che due operatori sono legati?

oleg.fresi
La risposta di vict è convincente. Grazie per l'aiuto!

vict85
Comunque se vuoi vederli dal punto di vista matematico. Lo xor è l'operazione di somma nello \(\mathbb{Z}_2\)-spazio vettoriale \(\mathbb{Z}_2^{n}\). L'and si comporta come l'intersezione insiemistica e l'or come l'unione insiemistica. Puoi dare un'occhiata all'algebra booleana, ma è molto difficile capire dove vuoi arrivare. Sembra quasi tu stia procedendo a caso.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.