代码中的符号,它做什么
ampersand in code, what does it do
我在网上找到了这段我想理解的代码。然而,谷歌搜索并没有找到任何关于以下代码中"与"的含义的结果
return ( 1.0 - ( (x * (x * x * 15731 + 789221) + 1376312589) & 7fffffff) / 1073741824.0);
我是从下一页得到的:http://freespace.virgin.net/hugo.elias/models/m_perlin.htm
是的,有人指出这不是真正的佩林,但我不在乎,我现在想知道基本情况。
问候
与号是按位AND。这意味着你在比特级别上进行比较。对于每个比特,当且仅当2个输入比特为1时,得到的比特为1。
1 & 2 = 0
因为:
1=0000000 1
2=00000010
但是
2 & 3 = 2
因为我们有:
2=00000010
3=00000011
结果=00000010
在您的情况下,逐位AND用于强制结果的第一位为0(如果结果为32位,在您的示例中就是这样),因为:
7fffffff = (0111) (1111) (1111) etc...
因此,无论你用什么"与"它,结果都将以0开头,然后保持不变。
假设结果是一个有符号整数,将第一位置为0的效果是确保结果始终为正。
这是因为在cpp中,有符号整数的第一位用于设置符号。1表示数字为负数,0表示数字为正数。
&
是按位的and
运算符。
0 & 0 == 0
1 & 0 == 0
0 & 1 == 0
1 & 1 == 1
相关文章:
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 是什么导致了这种使用三进制而不是短整型的有符号int到无符号int转换
- C++ C4244 =':从"std::streamsize"转换为"无符号短",可能会丢失数据;有什么解决办法吗?
- 符号":" C 和 C++ 中是什么意思?
- 无符号长整型和无符号 int 之间有什么区别,这 2 种类型应该如何在 c# 中封送?
- 这种错误的原因是什么:将"功能"重新定义为不同类型的符号
- 在C++中,将无符号整数转换为八进制表示,反之亦然的最佳方法是什么
- 代码输出随机符号,我不确定出了什么问题
- 什么是 16 字节有符号整数数据类型?
- 计算机使用什么方法添加无符号整数
- dynamic_cast什么时候会因为隐藏符号而失败?
- 这个星号 (*) 符号在 C++ 中是什么意思?-- 指向成员的指针
- 指针符号在参数规范中表示什么,例如:(char16 *缓冲区,int32 大小)?C++
- & 符号在这里做什么?
- 在平等符号左侧使用RVALUE参考的规则是什么?
- 根据浮点符号对浮点进行舍入的最简单方法是什么
- 在这段 python 代码中,大于符号是什么意思
- “*(无符号整数*)((无符号整数)块 + n*i)”是什么意思
- 通过无符号 char 别名进行对象访问,加载和存储时会发生什么?
- 在矢量的尖括号内使用指针符号与在外部使用指针符号有什么区别