hpbit-shift作用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hpbit-shift作用相关的知识,希望对你有一定的参考价值。

(bit-shift)是按位移位,是运算符

按位移位运算符的作用与它们的名字所暗示的完全一样。他们移动位。这是对不同班次运算符的简要(或不那么简要)介绍。

运营商
>>是算术(或有符号)右移运算符。
>>>是逻辑(或无符号)右移运算符。
<<是左移运算符,同时满足逻辑和算术移位的需要。
所有这些运算符都可以应用于整数值(int, long, 可能short和byteor char)。在某些语言中,将移位运算符应用于小于int自动将操作数调整为int.

请注意,这<<<不是运算符,因为它是多余的。

另请注意,。它们仅提供>>运算符,并且右移行为是为有符号类型定义的实现。答案的其余部分使用 C#/Java 运算符。

(在包括 GCC 和 Clang/LLVM 在内的所有主流 C 和 C++ 实现中,>>有符号类型是算术的。一些代码假设这一点,但这不是标准所保证的。但它不是undefined;标准要求实现来定义它方式或另一种方式。但是,负符号数的左移是未定义的行为(有符号整数溢出)。因此,除非您需要算术右移,否则使用无符号类型进行位移通常是个好主意。)

左移 (<<)
整数作为一系列位存储在内存中。例如,存储为 32 位的数字 6int将是:

00000000 00000000 00000000 00000110
将此位模式向左移动一个位置 ( 6 << 1) 将产生数字 12:

00000000 00000000 00000000 00001100
如您所见,数字向左移动了一个位置,而右边的最后一个数字用零填充。您可能还注意到,左移相当于乘以 2 的幂。所以6 << 1等价于6 * 2,并且6 << 3等价于6 * 8。一个好的优化编译器会尽可能用移位代替乘法。

非循环变速
请注意,这些不是循环班次。将此值向左移动一个位置 ( 3,758,096,384 << 1):

11100000 00000000 00000000 00000000
结果为 3,221,225,472:

11000000 00000000 00000000 00000000
“结束”移动的数字丢失了。它不会环绕。

逻辑右移 (>>>)
逻辑右移与左移相反。它们不是向左移动位,而是向右移动。
参考技术A 据了解,hpbit-shift是一种位运算,它允许计算机对数值进行逐位移动,以便用于快速算法,例如简单的整数乘法、除法和模运算。它还可以用于取得变量的某些位,并将位值组合成新的值,这样就可以灵活地表示和处理复杂的数据类型。 参考技术B 平台密钥在系统启动过程验证内核,以便使用替代操作系统。 选择HP 密钥会导致计算机使用预加载的 HP 特定启动密钥启动。 默认设置为 HP 密钥。

0140 JavaScript作用域:概述全局作用域函数作用域块级作用域

1.1 作用域概述

通常来说,一段程序代码中所用到的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。作用域的使用提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字冲突。

JavaScript(es6前)中的作用域有两种:

  • 全局作用域
  • 局部作用域(函数作用域)

1.2 全局作用域

作用于所有代码执行的环境(整个 script 标签内部),或者一个独立的 js 文件。

1.3 局部作用域

作用于函数内的代码环境,就是局部作用域。 因为跟函数有关系,所以也称为函数作用域。
        var num = 10;
        var num = 30;
        console.log(num);
   
        function fn() {
            // 局部作用域
            var num = 20;
            console.log(num);
        }
        fn();

1.4 JS没有块级作用域

  • 块作用域由 { } 包括

  • 在其他编程语言中(如 java、c#等),在 if 语句、循环语句中创建的变量,仅仅只能在本 if 语句、本循环语句中使用,如下面的Java代码:

    java有块级作用域:

    if(true){
      int num = 123;
      system.out.print(num);  // 123
    }
    system.out.print(num);    // 报错

    以上java代码会报错,是因为代码中 { } 即一块作用域,其中声明的变量 num,在 “{ }” 之外不能使用;

    而与之类似的JavaScript代码,则不会报错:


Js中没有块级作用域(在ES6之前)

if(true){
  var num = 123;
  console.log(123); //123
}
console.log(123);   //123

以上是关于hpbit-shift作用的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript作用域:全局作用域局部作用域块级作用域作用域链变量提升

0140 JavaScript作用域:概述全局作用域函数作用域块级作用域

作用域和闭包作用域和作用域链

Js基础27:作用域

js 静态作用域和动态作用域

JavaScript 作用域作用域链变量提升