[讨论]位移!
你刚刚开始为一家公司工作,他们要实现一组过程来操作一个数据结构,要将4个有符号字节封装成一个32为的unsigned .在字中的字节是从0(底位)到,3(高),你被分配的任务是:为使用二进制补码运算和算术有移来编写一个有如下的函数:
/*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,给出正确的实现,只使用左右位移和一个减法!