当前位置: 首页 > news >正文

扣一个细节问题

请看下这个

uint bits = 0;
for (int y = 0; y < 5; y++) {for (int x = 0; x < 4; x++)bits |= b[y][x] << (y * 4 + x);}

上面的代码把一个[5][4]的byte数组用bits表示,该数组里的元素非0即1.

在经典的The UNIX Programming Environment里有段atoi的代码:

 

int n = 9;
while (c = *s++)n = n * 10 + c - '0';

我们是否应该致敬下,bits = (bits << 1) | ...

① 在使用bits的地方,我们想用y * 4 + x得到位置,而不是又丑又慢的(5 - y) * 4 + (4 - x)

② for (int y = 4; y >= 0; y--)... 据说CPU很不喜欢这种“逆序”。

③ 如今* 4不比<< 2慢,再说想不让gcc优化还有点难呢,-O 0都关不全,详情(还是八皇后)。

 

http://www.jsqmd.com/news/17858/

相关文章:

  • 10.20java作业
  • 题解:Luogu P14175 【MX-X23-T5】向死存魏
  • 软工第三次作业————结对作业
  • Spring 常见注解
  • 题解:AtCoder ARC208C Mod of XOR
  • 题解:Luogu P6898 [ICPC 2014 WF] Metal Processing Plant
  • 32-腾讯IM接入资料和定价
  • 题解:AtCoder ARC207A Affinity for Artifacts
  • 题解:Luogu P9260 [PA 2022] Miny
  • 题解:Luogu P13544 [OOI 2022] Serious Business
  • 题解:Luogu P14254 分割(divide)
  • 31_创蓝短信接入资料和定价
  • 02.Python百行代码实现抽奖系统
  • CSP-S 35
  • 题解:P11662 [JOI 2025 Final] 方格染色 / Grid Coloring
  • CSP-S 32 多校5
  • CSP-S 33
  • CSP-S 29
  • 10.20每日总结
  • CSP-S 31
  • 2025网络安全振兴杯wp
  • 后缀树
  • ES原理、zookeeper、kafka
  • CF1606E Arena 题解(动态规划)
  • 服务器CPU市场概况2025
  • CSP-S 24
  • 正睿 2025 NOIP20 连测 Day5 做题记录
  • 29-腾讯云COS接入指南与价格说明
  • LLM学习记录DAY7
  • CSP-S 23