我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

本页主题: c问题共同讨论一下~ 显示签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

perfect_刘



性别: 帅哥 状态: 该用户目前不在线
等级: 栋梁之材
发贴: 960
威望: 0
浮云: 1105
在线等级:
注册时间: 2005-11-20
最后登陆: 2009-05-08

5come5帮你背单词 [ post /pəust/ B n. 柱,桩,杆;v. 贴出(报告等),公布,公告 ]


c问题共同讨论一下~

有8个字节,每个字节第一位是空的,没有用,现在要将每个字节的这第一位用起来,
就是将每个字节左移一位,后面字节又跟着补上来,即第一个字节左移一位,第二个就左移两位....第八个字节左移八位.
这样8个字节的存储就变成了7个字节,省出一个字节.

写一函数实现这一功能

void saveMemory(char* source,char* dest)
{
    //source为8个字节的输入参数,dest变成了7个字节的输出参数
}

做出来了,但是感觉有点复杂
希望高人们赐教
顶端 Posted: 2008-02-23 16:52 | [楼 主]
zhoubaozhou





性别: 帅哥 状态: 该用户目前不在线
等级: 栋梁之材
发贴: 696
威望: 0
浮云: 1082
在线等级:
注册时间: 2007-03-13
最后登陆: 2023-01-26

5come5帮你背单词 [ endeavor /in'd/və/ vi. & n. 努力,尽力 ]


memcpy这个函数就可以实现你要的功能了~~
这样做的意义好像不是很大,编译器会自动对齐的,像7个字节的会自动对齐到8个字节,这样可以优化效率.
顶端 Posted: 2008-02-23 17:00 | [1 楼]
zhoubaozhou





性别: 帅哥 状态: 该用户目前不在线
等级: 栋梁之材
发贴: 696
威望: 0
浮云: 1082
在线等级:
注册时间: 2007-03-13
最后登陆: 2023-01-26

5come5帮你背单词 [ voyage /void3ə/ n. & vi. 航行,旅行,航海 ]


Quote:
引用第2楼perfect_刘于2008-02-23 17:06发表的  :
我没有理解你的意思
我的意思是
比如 一个8字节的串7f-7f-7f-7f-7f-7f-7f-7f
运算后得到ff-ff-ff-ff-ff-ff-ff
十六进制表示


用移位来实现,应该效率很高的
顶端 Posted: 2008-02-23 17:12 | [2 楼]
zhoubaozhou





性别: 帅哥 状态: 该用户目前不在线
等级: 栋梁之材
发贴: 696
威望: 0
浮云: 1082
在线等级:
注册时间: 2007-03-13
最后登陆: 2023-01-26

5come5帮你背单词 [ understand /Λndə'stænd/ vt. 懂,理解,领会,获悉,听说 ]


不用移位也可以直接将数据搬过去吗~每次搬7bit
顶端 Posted: 2008-02-23 17:13 | [3 楼]
zhoubaozhou





性别: 帅哥 状态: 该用户目前不在线
等级: 栋梁之材
发贴: 696
威望: 0
浮云: 1082
在线等级:
注册时间: 2007-03-13
最后登陆: 2023-01-26

5come5帮你背单词 [ dimension /di'menən/ n. 尺寸,长(宽、厚、高)度,维(数),(pl.)容积,面积,大小 ]


Quote:
引用第6楼perfect_刘于2008-02-23 17:17发表的  :

怎么个搬法
我就是不晓得
应该不能位访问吧


用64位的,将它每7个bit每7个bit搬进去就可以了吗

long long tmp;

tmp |= ((k&0x7f)<<(pointer));

GCC的语法
顶端 Posted: 2008-02-23 20:08 | [4 楼]
我来我网·5come5 Forum » 程序员之家

Total 0.009295(s) query 6, Time now is:11-22 11:34, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号