voidchangeLowHighByte(unsignedlongint num){unsigned maskLow =1u;unsigned maskHigh =1u<<31;for(int i =0; i<8; i++){int low = num&maskLow?1:0;int high = num&maskHigh?1:0;if(low ==0&&high==1){
num = num +maskLow-maskHigh;}elseif(low ==1&&high==0){
num = num -maskLow+maskHigh;}
maskLow<<=1;
maskHigh>>=1;}
cout<<num<<endl;}
无符号长整数中间两个字节循环左移N位
voidreverse(unsignedlongint&num,int low,int high){unsigned maskLow =1u<<low;unsigned maskHigh =1u<<high;while(maskLow<maskHigh){for(int i =0; i<8; i++){int temp1 = num&maskLow?1:0;int temp2 = num&maskHigh?1:0;if(temp1 ==0&&temp2==1){
num = num +maskLow-maskHigh;}elseif(temp1 ==1&&temp2==0){
num = num -maskLow+maskHigh;}
maskLow<<=1;
maskHigh>>=1;}}}voidmoveMiddleByte(unsignedlongint num,int n){
n = n%16;reverse(num,8,23);reverse(num,8,8+n-1);reverse(num,8+n,23);
cout<<num<<endl;}