为使用二进制补码运算和算术有移来编写一个有如下的函数:
/*Delcaretion of data type where 4 bytes are packed into an unsigned */
typedef unsigned packde_t;
/*Extrct bte from word ,return a signde integer*/
int xbyte(packed_t word ,int bytenum)
{
return
(word>>(bytenum<<3))&0xff;
}
A,这段代码错在那里?
B,给出正确的实现,只使用左右位移和一个减法!