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

C#开发的OpenRA的NextPowerOf2

C#开发的OpenRA的NextPowerOf2

在游戏里,经常需要对计算资源进行优化。

比如屏幕的大小,以及缓冲区的大小,还有纹理的大小。

由于计算机都是基于二进制的原理,那么它的最快计算速度,就是让计算的数字都是2的n次方。

基于此策略,在程序里就需要计算出来最接近2的n次方的数。

比如NextPowerOf2函数,就是用来计算大于被计算的数,但又是最小2的n次方的数。

要进行这个计算,一般有两种算法,一种从小到大计算2的n次方,直到刚好超过就退出循环。

另外一种算法就是采用减半累加法,这是一种特殊的算法。

如下这样:

直接看例子吧。比如一个数5 (101)v = 0b101;

v --; // v = 0b0000 0100;

v |= v >> 1; // v = 0b0000 0110;

v |= v >> 2; // v = 0b0000 0111;

// ... 下面的就不用写了

v ++; // v = 0b0000 1000 就是要的答案从上面的例子就可以看出这个算法的目的,就是要不断的复制已经置为1的最高位。因为第一次右移1位,就把最高位复制了1次;然后第二次就要复制最高的2个位,所以右移2位;下一次就要复制4个位&#x

http://www.lryc.cn/news/16049.html

相关文章:

  • CDH 6.3.2启用HDFS高可用
  • 多服务器节点访问解决一人一单问题+redis设置锁方案
  • tensorflow 学习笔记(三):神经网络八股
  • 华为OD机试真题Python实现【射击比赛】真题+解题思路+代码(20222023)
  • 【YBT2023寒假Day12 C】树的计数 II(prufer)(结论)(数学)
  • 深入浅出C++ ——多态
  • 华为OD机试真题Python实现【整数编码】真题+解题思路+代码(20222023)
  • FPGA纯Vhdl实现MIPI CSI2RX视频解码输出,OV13850采集,提供工程源码和技术支持
  • 7 个 JavaScript Web API 来构建你不知道的未来网站
  • 跟ChatGPT,聊聊ChatGPT
  • Java 数组(详细教学 基础篇)
  • python装饰器原理 | 常用装饰器使用(@cache, @lru_cache)
  • [oeasy]python0090_极客起源_wozniac_苹果公司_Jobs_Wozniac
  • Spring基础总结(下)
  • 设计模式面试题
  • 需要知道的一些API接口的基础知识
  • 互融云数字资产管理平台综合解决方案
  • 记住这12个要点,你也能打造出让HR和技术主管前一亮的前端简历
  • AQS学习:ReentrantLock源码解析
  • RocketMQ源码分析消息消费机制—-消费端消息负载均衡机制与重新分布
  • 华为OD机试真题Python实现【数据分类】真题+解题思路+代码(20222023)
  • vue项目中引入字体包
  • Linux 文件相关操作
  • 【计算机网络】应用题方法总结
  • Linux 浅谈之性能分析工具 perf
  • 代码随想录-Day7:四数相加、三数之和
  • jsp在线考试系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
  • 【总结】2023数学建模美赛!收官!
  • C# GDI+ winform绘图知识总结
  • 【研究空间复用及函数调用问题】