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

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

perfect_刘



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

5come5帮你背单词 [ inhabit /in'hæbit/ vt. 居住于 ]


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帮你背单词 [ honey /'hΛni/ n. 蜜,蜂蜜,爱人,宝贝 ]


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



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

5come5帮你背单词 [ challenge /'tælənd3ə/ vt. 向…挑战;n. 挑战 ]


我没有理解你的意思
我的意思是
比如 一个8字节的串7f-7f-7f-7f-7f-7f-7f-7f
运算后得到ff-ff-ff-ff-ff-ff-ff
十六进制表示
顶端 Posted: 2008-02-23 17:06 | [2 楼]
zhoubaozhou





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

5come5帮你背单词 [ dictation /dik'teiən/ n. 口述,听写 ]


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 | [3 楼]
zhoubaozhou





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

5come5帮你背单词 [ robe /rəub/ n. 长而宽松的上衣,长袍,礼服 ]


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



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

5come5帮你背单词 [ rarely /'r/əli/ ad. 稀少地,很少地,难得地 ]


Quote:
引用第3楼zhoubaozhou于2008-02-23 17:12发表的  :


用移位来实现,应该效率很高的


呵呵 是每个byte中的第一个bit没有用 是移位
就是想见识下你的高招了~
顶端 Posted: 2008-02-23 17:14 | [5 楼]
perfect_刘



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

5come5帮你背单词 [ deflation // n. 紧缩通货 ]


Quote:
引用第4楼zhoubaozhou于2008-02-23 17:13发表的  :
不用移位也可以直接将数据搬过去吗~每次搬7bit

怎么个搬法
我就是不晓得
应该不能位访问吧
顶端 Posted: 2008-02-23 17:17 | [6 楼]
zhoubaozhou





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

5come5帮你背单词 [ assembly /ə'sembli/ n. 集合,集会,装配 ]


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 | [7 楼]
perfect_刘



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

5come5帮你背单词 [ finance /fai'næns, fi-/ n. 财政(学),(pl.)资金,为…提供资金 ]


Quote:
引用第7楼zhoubaozhou于2008-02-23 20:08发表的  :


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

long long tmp;
.......

恩 比较简单
谢了
顶端 Posted: 2008-02-23 22:58 | [8 楼]
我来我网·5come5 Forum » 程序员之家

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