Rotazione registro PICC

Salve a tutti ho la necessita di fare una rotazione a sinistra di una variabile tipo char. Penso che esista un operatore che fa questo vero? Come si usa? Praticamente dovrei fare questo:

b7 b6 b5 b4 b3 b2 b1 b0 ruotando di una posizione verso sinistra dovrei avere: b6 b5 b4 b3 b2 b1 b0 b7

Grazie

Reply to
Cap4
Loading thread data ...

non esiste nessun operatore specifico per le rotazioni, guarda se il tuo compilatore supporta qualche estensione o funzione specifica

altrimenti in C 'puro' puoi fare cosi:

c = (b>>7) | (b

Reply to
mmm

Sul manuale del compilatore PICC tra gli operatori ho trovato ROR e ROL che sarebbero rispettivamente rotazione a destra e a sinistra ma non so come si usano...

Altra cosa dovrei leggere da una variabile tipo char un bit a mia scelta come potrei fare?

Reply to
Cap4

se sono quelli a pagina 86 servono solo come operazioni all'interno delle espressioni di costanti per l'assembler , totalmente inutili al tuo scopo

nel post precedente non ho menzionato la possibilita' di un breve pezzo di assembler in-line per eseguire le operazioni di rotate, non mi chiedere come si fa perche' non conosco ne il compilatore ne il linguaggio macchina dei pic.

se per eseguire test logici basta mettere in and ( bit a bit ) la variabile con una maschera adeguata.

l'espressione:

b & 0x40

e' non nulla se il settimo bit e' diverso da zero e cosi' via

l'uso dei bitfield (e delle union ) puo' permettere l'accesso diretto a bit per queste cose ti rimando ad un buon liro sul C, verifica inoltre se il compilatore ha delle estensioni non ANSI per l'accesso diretto ai bit

Reply to
mmm

Io mi riferivo a quello scritto a pagina 189 sempre che abbiamo lo stesso manuale...

Come il settimo?? Non il quarto? O forse non ho capito come funziona la cosa...

Reply to
Cap4

di quale manuale di quale compilatore C, ho la strana sensazione che stiamo parlando di cose diverse

io mi riferivo a questo PICC

HI-TECH PICC Compiler

formatting link
passami un riferimento al tuo e vediamo di che si tratta

0x40 in binario e' 01000000 , settimo bit ( contato primo-ottavo da destra a sinistra ) & e' l'and bit a bit per il C
Reply to
mmm

e si anche io l'ho preso da li...

Quindi se ho capito:

if (c & 0x04) { RA2=1; } else RA2=0;

Questa controlla il terzo bit da destra e mette a 1 RA2 se lo trova a 1 indistintamente dallo stato degli altri giusto?

Reply to
Cap4

cerchiamo di sincronizzarci: il mio scaricabile 'ora' dal sito e' lungo 316 pagine , prima pagina a colori e la seconda identica alla prima ma monocromatica...

HI-TECH software

PICC ansi c compiler

e poi riprendiamo il discorso sui rotate

giusto

Reply to
mmm

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.