关于除法取整的问题

qtxie280 2011-08-08 10:12:32
小弟有一问题,冥思苦想不得解,在这里请教各位:
我有一个ID,格式是这样的:
aaabbbbb
例如 12310000

我想分离出aaa,可以用aaabbbbb / 100000,这是最简单的,我想知道有没有更高效的方法?
...全文
729 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lvjing_CSDN 2011-08-08
  • 打赏
  • 举报
回复
楼主看看用按位与运算(&)可行。毕竟id一般不用来计算,你就规定下前几位表示aaa,后几位表示bbbbb。这样一次按位与操作就可以得到前缀或者后缀。
赵4老师 2011-08-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 frog280 的回复:]
引用 2 楼 zhao4zhong1 的回复:

int id=12310000;
char ids[9];
char aaas[4],bbbbbs[6];
int aaa,bbbbb;
sprintf(ids,"%08d",id);
sscanf(ids,"%3d%5d",&aaa,&bbbbb);
sscanf(ids,"%3s%5s",aaas……
[/Quote]
效率不会更高,只是容易理解、容易修改、扩展而已。
要效率高就直接
aaa=id/100000;
bbbbb=id-aaa;
sc_gw 2011-08-08
  • 打赏
  • 举报
回复
楼主方法最高效
qtxie280 2011-08-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhao4zhong1 的回复:]

int id=12310000;
char ids[9];
char aaas[4],bbbbbs[6];
int aaa,bbbbb;
sprintf(ids,"%08d",id);
sscanf(ids,"%3d%5d",&aaa,&bbbbb);
sscanf(ids,"%3s%5s",aaas,bbbbbs);
[/Quote]

这样效率会更高吗?我试一下看看
lj10193019 2011-08-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 one2zero 的回复:]
位移比基础乘除更高效
[/Quote]
one2zero 2011-08-08
  • 打赏
  • 举报
回复
位移比基础乘除更高效
赵4老师 2011-08-08
  • 打赏
  • 举报
回复
int id=12310000;
char ids[9];
char aaas[4],bbbbbs[6];
int aaa,bbbbb;
sprintf(ids,"%08d",id);
sscanf(ids,"%3d%5d",&aaa,&bbbbb);
sscanf(ids,"%3s%5s",aaas,bbbbbs);
Michael_Xie 2011-08-08
  • 打赏
  • 举报
回复
这个应该已经不错了吧?
concreteHAM 2011-08-08
  • 打赏
  • 举报
回复
C++编译器会优化成乘法来取整的,这已经是高效的方法了。
走好每一步 2011-08-08
  • 打赏
  • 举报
回复
现在编译器很NB的,以前很多编程技巧都是在做无用功。

64,676

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧