| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1882 人关注过本帖
标题:[讨论]位移!
取消只看楼主 加入收藏
yangzhifu
Rank: 1
等 级:新手上路
威 望:2
帖 子:433
专家分:0
注 册:2007-4-11
收藏
 问题点数:0 回复次数:9 
[讨论]位移!
你刚刚开始为一家公司工作,他们要实现一组过程来操作一个数据结构,要将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,给出正确的实现,只使用左右位移和一个减法!
搜索更多相关主题的帖子: 位移 二进制 unsigned word int 
2007-11-04 17:03
yangzhifu
Rank: 1
等 级:新手上路
威 望:2
帖 子:433
专家分:0
注 册:2007-4-11
收藏
得分:0 

也就是说,函数会抽取出指定的字节,再把它符号扩展位一个32为的int.


方寸之内,剖天下; 方坛之内,析自我;
2007-11-04 17:05
yangzhifu
Rank: 1
等 级:新手上路
威 望:2
帖 子:433
专家分:0
注 册:2007-4-11
收藏
得分:0 
等待中...................
思考中..................
努力中.................

方寸之内,剖天下; 方坛之内,析自我;
2007-11-04 17:06
yangzhifu
Rank: 1
等 级:新手上路
威 望:2
帖 子:433
专家分:0
注 册:2007-4-11
收藏
得分:0 

对,2的3次方,在乘上它的基数bytenum


方寸之内,剖天下; 方坛之内,析自我;
2007-11-04 17:35
yangzhifu
Rank: 1
等 级:新手上路
威 望:2
帖 子:433
专家分:0
注 册:2007-4-11
收藏
得分:0 

谢谢大家!


方寸之内,剖天下; 方坛之内,析自我;
2007-11-04 18:42
yangzhifu
Rank: 1
等 级:新手上路
威 望:2
帖 子:433
专家分:0
注 册:2007-4-11
收藏
得分:0 

为什么不考虑bytenum>3啊?


方寸之内,剖天下; 方坛之内,析自我;
2007-11-04 22:28
yangzhifu
Rank: 1
等 级:新手上路
威 望:2
帖 子:433
专家分:0
注 册:2007-4-11
收藏
得分:0 

自己觉得方法难了点,而且用的特殊的量太多了!


方寸之内,剖天下; 方坛之内,析自我;
2007-11-04 22:29
yangzhifu
Rank: 1
等 级:新手上路
威 望:2
帖 子:433
专家分:0
注 册:2007-4-11
收藏
得分:0 
bytenum的检测if ((~0&lt;&lt;2)&amp; bytenum)

方寸之内,剖天下; 方坛之内,析自我;
2007-11-04 22:38
yangzhifu
Rank: 1
等 级:新手上路
威 望:2
帖 子:433
专家分:0
注 册:2007-4-11
收藏
得分:0 
以下是引用leeco在2007-11-4 18:34:20的发言,还须解答
以下是引用leeco在2007-11-4 18:34:20的发言:
缺少符号扩展
int xbyte(packed_t word ,int bytenum)
{
return (((word>>(bytenum<<3))&0x80)?((word>>(bytenum<<3))&0xff|0xffffff00):((word>>(bytenum<<3))&0xff));
}

首先>>的优先级大于&的所以((word>>(bytenum<<3))&0x80)可以改为(word>>(bytenum<<3)&0x80)
第二,在扩展是先是将0xff进行转换,变为 unsiged ,unsigned 的扩展是无符号扩展!


方寸之内,剖天下; 方坛之内,析自我;
2007-11-04 23:40
yangzhifu
Rank: 1
等 级:新手上路
威 望:2
帖 子:433
专家分:0
注 册:2007-4-11
收藏
得分:0 

我还需要答复!


方寸之内,剖天下; 方坛之内,析自我;
2007-11-05 19:38
快速回复:[讨论]位移!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012463 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved