如何使用 mod 运算符对数字进行换行
不确定这是否可能,但是是否有一种自动方法,使用 mod 或类似的东西来自动纠正错误的输入值?例如:
If r>255, then set r=255 and
if r<0, then set r=0
所以基本上我要问的是有什么聪明的数学方法来设置它而不是使用
if(r>255)
r=255;
if(r<0)
r=0;
Not sure if this is possible, but is there an automatic way, using mod or something similiar, to automatically correct bad input values? For example:
If r>255, then set r=255 and
if r<0, then set r=0
So basically what I'm asking is whats a clever mathematical way to set this rather than using
if(r>255)
r=255;
if(r<0)
r=0;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
怎么样:
How about:
以下函数将输出您要查找的内容:
如下所示:
The following function will output what you are looking for:
As shown here:
你能做一些类似的事情吗——
Could you do something like --
根据您的硬件以及解释器处理 int 的方式,您可以这样做:
假设无符号 int 是 16 位(为了保持掩码简短):
如果 int 是 32 位,则需要 16 个以上的零位掩码的开始。
在按位 AND 之后,r 的最大值为 255。根据硬件的不同,无符号 int 可能会在给定低于零的值时执行一些奇怪的操作。我相信这种情况已经由位掩码处理了(至少在我使用的硬件上)。如果没有,您可以先执行
r = min(r, 0);
。Depending on how your hardware and possibly how your interpreter deal with ints, you can do this:
Assuming that an unsigned int is 16 bits (to keep my masks short):
If an int was 32 bits, you'd need 16 more zeros at the start of the bit mask.
After that bitwise AND, the maximum value r can have is 255. Depending on the hardware, an unsigned int might do something odd given a value below zero. I believe that case is already handled by the bitmask (at least on the hardware that I've used). If not, you can do
r = min(r, 0);
first.我在处理图像时遇到了类似的问题。对于某些特殊值(例如 0 和 255),您可以使用这种不可移植的方法:
在实际情况下,必须很少执行钳位,以便您可以编写
并确定哪个最快,进行测量。
I had similar problem when dealing with images. For some special values (like these ones, 0 and 255) you can use this nonportable method:
In real cases the clamping have to be performed rarely, so that you could write
And to be sure which is fastest, measure.