指定位置 指定位数的转换

unsigned  int  intvert(unsigned  int  x,int  p,int  n)实现对 x 的进行转换,p 为起始转

化位,n 为需要转换的长度,假设起始点在右边. x= 0b0001  0001,p=4,n=3 转换后 x=0b0110  0001

#include<iostream>
#include<assert.h>
using namespace std;
unsigned  int  intvert(unsigned  int  x,int  p,int  n)  //假定 p=4,n=3
{
 unsigned  int t=0;
 unsigned  int a=1;
     assert(n+p<=32);
 for(int i=0;i<n;i++)
 {
  t=t|a;
  a=a<<1;
 }
 t=t<<p;
 x=x^t;
 return x;
}

int main()
{
 int x,p,n;
 cout<<"请输入三个正整数(后两个数之和小于32)"<<endl;
 cin>>x>>p>>n;
 int result=intvert(x,p,n);
 cout<<"转换后为"<<result<<endl;
 return 0;
}

posted on 2011-08-07 10:38  原来...  阅读(196)  评论(0)    收藏  举报

导航