1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| unsigned __int8 Bit_rotate(unsigned __int8 data, int nBits){
unsigned __int8 shiftedData,lostData,rotatedData,result;
int dataBits = 8;
int q;
q = nBits % dataBits;
if ( q == 0) {
return(data);}
else if (q<0){
shiftedData = data >> -q;
lostData = data ^ (shiftedData << -q);
rotatedData = lostData << (q + dataBits); }
else{
shiftedData = data << q;
lostData = data ^ (shiftedData >> q);
rotatedData = lostData >> (dataBits-q); }
result = shiftedData + rotatedData;
return(result);
} |
Partager