Questions tagged «saturation-arithmetic»

14
如何在不超过最大值的情况下递增变量?
我正在为学校设计一个简单的视频游戏程序,并且创建了一种方法,如果调用该方法,玩家将获得15个健康点。我必须保持最大生命值100,并且由于目前有限的编程能力,我正在执行此类操作。 public void getHealed(){ if(health <= 85) health += 15; else if(health == 86) health += 14; else if(health == 87) health += 13; }// this would continue so that I would never go over 100 我了解我的语法不是很完美,但是我的问题是,什么是更好的方法,因为我还必须对损坏点做类似的事情,并且不要低于0。 这称为饱和算术。

11
饱和减/加无符号字节
假设我有两个无符号字节b和x。我需要计算bsubasb - x和baddas b + x。但是,我不希望在这些操作期间发生下溢/上溢。例如(伪代码): b = 3; x = 5; bsub = b - x; // bsub must be 0, not 254 和 b = 250; x = 10; badd = b + x; // badd must be 255, not 4 这样做的明显方法包括分支: bsub = b - min(b, x); …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.