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
Didn't find your answer? Ask the community — no account required.
M
mmm
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
C
Cap4
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?
M
mmm
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
C
Cap4
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...
M
mmm
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
C
Cap4
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?
M
mmm
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
Join the Discussion
Have something to add? Share your thoughts — no account required.
Didn't find your answer?
Ask the community — no account required
Report Content
You are reporting this content to the moderators. They will look at it
ASAP.