Scusatemi ho capito male
comunque non credo che in c si possa fare visto che, da quanto ne so, non c'è modo di utilizzare i flag e per quosto tipo di operazione serve il flag di riporto.
perchè l'operatore da usare sarebbe lo shift inquanto :
se noi vogliamo trasformare esempio
0001 1011 (valore intero 27) in 1101 1000 (intero 216)
dovremo fare :
0001 1011 shift sinistro di 1 avremo 00110110 riporto = 0
00110110 shift sinistro di 1 avremo 0110110 riporto = 0
0110110 shift sinistro di 1 avremo 110110 riporto = 0
110110 shift sinistro di 1 avremo 10110 riporto = 1
10110 shift sinistro di 1 avremo 0110 riporto = 1
etc etc
secondo voi negli spazi bianchi vicino al numero che valore ci andrà ?
gli operatori che aggiscono sui bit, shift e rotazione, per riempire gli spazi vuoti usano per default lo zero. "perdendo" il bit che hanno preso e messo nel flag di riporto (cf).
secondo me l'unico modo per fare questo tipo di operazione sarebbe quella di utilizzare il buon vecchio assembler.
la procedura grosso modo e la seguente:
mov ax,variabile
mov cx,?? ; dove ?? rappresenta il numero di shift che vuoi fare
ciclo:
shl ax,1
adc ax,0
loop ciclo