有两种情况下,
1)宿主是v8之类的虚拟化的引擎,但就我对虚拟化的理解,位运算在虚拟机里,应该还是不如c语言等编译性语言的;
2)大面积矩阵式运算,这时候有时候会用到位运算。当然,位运算应该学通,这对内存,以及优化程序性能有帮助。
位运算通常配合二进制来学,比较快一点。可能比较绕人的是高位。中国很多概念式教程说的很烂,都喜欢装13(逼)的用异或取反等来解释,这是很不科学的。
位运算的高位在c语言等里面表现,取决于cpu指令;但在javascript里不是——至少不完全是。我没仔细研究过。
无论哪种语言。位运算的意义有两种
1)或、异或、取反、与,这种叫掩码式运算,主要应用在于给某二进制位进行验证、设置、改变状态(改变状态,其实也是设置)等;
2)是位移,这个在加密解密压缩等科学里面经常看到,平常程序的应用不是很多,或者我短路没想到。
考虑到兼容性的问题,我觉得javascript的整数不应该当作c语言等下的整数来看。你保不齐哪个引擎是32位或者是64位。32位和64位在位移的时候,有时候结果不同的。
所以我的结论是,javascript不要苛求位运算,能避免就避免。但位运算还是要好好学,建议借助于c语言等来学。
可以对指定的scene运行后期效果。
(1)创建一个作为背景图片的场景。
(2)创建一个场景,里面包含一个看起来像地球的球体。
(3)创建一个场景,里面包含一个看起来像火星的球体。
(4)创建EffectComposer对象,用于将这三个场景渲染到一个图片中。
(5)在渲染为火星的球体上应用彩色效果。
(6)在渲染为地球的球体上应用褐色效果。
1、 我们直接使用场景的背景属性来添加星光背景图片。还有一种可选方式也可以同于添加背景图片,那就是利用THREE.OrthoGraphicCamera(正交摄像机)。因为THREE.OrthoGraphicCamera不会根据物体距离摄像机的距离来缩放物体,所以可以添加一个正对摄像机的THREE.PlaneGeometry几何体,然后在上面添加图片。
2、场景渲染时候需要将渲染器改为组合器的渲染器,并且需要将WebGLRenderer中autoClear设置为false
1)基本思路:要判断两个IP地址是否在同一个网段,将它们的IP地址分别与子网掩码做与运算,得到的结果为网络号,如果网络号相同,就在同一子网,否则,不在同一子网。
2)具体实现:
复制代码
代码如下:
/**
*
[isEqualIPAddress
判断两个IP地址是否在同一个网段]
*
@param
{[String]}
addr1
[地址一]
*
@param
{[String]}
addr2
[地址二]
*
@param
{[String]}
mask
[子网掩码]
*
@return
{Boolean}
[true
or
false]
*/
function
isEqualIPAddress
(addr1,addr2,mask){
if(!addr1
||
!addr2
||
!mask){
console.log("各参数不能为空")
return
false
}
var
res1
=
[],
res2
=
[]
addr1
=
addr1.split(".")
addr2
=
addr2.split(".")
mask
=
mask.split(".")
for(var
i
=
0,ilen
=
addr1.length
i
<
ilen
i
+=
1){
res1.push(parseInt(addr1[i])
&
parseInt(mask[i]))
res2.push(parseInt(addr2[i])
&
parseInt(mask[i]))
}
if(res1.join(".")
==
res2.join(".")){
console.log("在同一个网段")
return
true
}else{
console.log("不在同一个网段")
return
false
}
}