用算术右移实现逻辑右移及用逻辑右移实现算术右移
函数srl()用算术右移实现逻辑右移,函数sra()用逻辑右移实现算术右移。
程序代码
int sra(int x,int k);
unsigned int srl(unsigned int x, int k);void main()
{int rx1,k,x1;unsigned int rx2,x2;k=3;x1=0x8777;x2=0x8777;rx1=sra(x1, k);rx2=srl(x2, k);while(1);
}
int sra(int x,int k)
{int xsrl;int y=-1;int length=8*sizeof(int);xsrl=(unsigned int) x>>k;if(x<0){y<<=(length-k);xsrl=xsrl|y;}return xsrl;
}
unsigned int srl(unsigned int x, int k)
{unsigned int xsra=(int) x>>k;int i=1;int length=8*sizeof(int);if(x>(i<<15))xsra &=(i<<(length-k))-1;return xsra;
}
运行结果
rx1=0xf0ee, rx2=0x10ee。