用位移位移运算符怎么让第一位和第四位位0
1个回答
2015-05-17
展开全部
在下例中,整数 1 向左移 10 位:
x = 1 << 10按位左移位运算的结果是 1024。这是因为十进制的 1 等于二进制的 1,二进制的 1 向左移 10 位是二进制的 10000000000,而二进制的 10000000000 就是十进制的 1024:
下例将 65535 转换为 32 位整数,然后右移 8 位,结果为十进制值 255:
var a:Number = 65535 >> 8;
trace(a); // 255这是由于十进制的 65535 等于二进制的 00000000000000001111111111111111(十六个 0,后跟十六个 1);向右移 8 位将导致至少舍去 8 个最低有效位(最右边的 8 位)。因为 65535 是正数,所以,通过移位而空出的位的位置(最左边的 8 位)将填充 0。结果是二进制的 00000000000000000000000011111111(二十四个 0,后跟八个 1),这表示 32 位整数 255。
位移的时候使用int,计算机在实际计算过程中转化为二进制数据,然后直接添加或者删除数据。
这样做的目的是因为位运算直接对于数据进行处理,相比使用*/等运算符可以更迅速,节省计算机开销!
x = 1 << 10按位左移位运算的结果是 1024。这是因为十进制的 1 等于二进制的 1,二进制的 1 向左移 10 位是二进制的 10000000000,而二进制的 10000000000 就是十进制的 1024:
下例将 65535 转换为 32 位整数,然后右移 8 位,结果为十进制值 255:
var a:Number = 65535 >> 8;
trace(a); // 255这是由于十进制的 65535 等于二进制的 00000000000000001111111111111111(十六个 0,后跟十六个 1);向右移 8 位将导致至少舍去 8 个最低有效位(最右边的 8 位)。因为 65535 是正数,所以,通过移位而空出的位的位置(最左边的 8 位)将填充 0。结果是二进制的 00000000000000000000000011111111(二十四个 0,后跟八个 1),这表示 32 位整数 255。
位移的时候使用int,计算机在实际计算过程中转化为二进制数据,然后直接添加或者删除数据。
这样做的目的是因为位运算直接对于数据进行处理,相比使用*/等运算符可以更迅速,节省计算机开销!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询