前端Javascript位运算

php web前端开发框架有哪些
mvc web前端开发框架
mvc 前端 开发框架有哪些

Javascript支持位操作,如 & ,| , ^ , ~, 分别为与、或、异或、非操作。此外还有移位操作。

这里主要对移位操作进行说明。在看书学习Javascript的过程中多次把位操作尤其是移位操作给略过,今天做一套笔试题,发现里面有不止一道位操作的题,潜下心看了看。

位运算符是在数字底层(即表示数字的32个数位)进行操作的

无符号整数把最后一位作为另一个数位处理。

在有符号整数中,第0-30位为数值位,第31位为符号位。负数存储为二进制补码。(以我的知识判断,其实所有的数包括正数也是以二进制补码的形式存储的,只不过正数的原码和补码相同罢了)

求负数补码的过程:原码——>符号位不变,其他位取反得到反码——>再加1得到补码

有趣的是,把负整数转换成二进制字符串后,ECMAScript 并不以二进制补码的形式显示,而是用数字绝对值的标准二进制代码前面加负号的形式输出。

例如:

  1. var iNum = -18;
  2. alert(iNum.toString(2));//输出 “-10010”

左移运算(<<),它把数字中的所有数位向左移动指定的数量。左移时,数字右边的空位用0填充。

例如,

  1. var iOld = 2;//二进制10
  2. var iNew = iOld << 5;//二进制10 00000 十进制64

有符号右移运算(>>)

它把32位数字中的所有数位整体右移,同时保留该数的符号。移动时,数字左侧的空位用符号位的值填充。

例:

13 >> 2 = 3

1101  -> 11

-13 >> 2 = -4

解释:

10000000 00000000 00000000 00001101(原码) -> 11111111 11111111 11111111 11110010(反码) -> 11111111 11111111 11111111 11110011(补码) ->

11111111 11111111 11111111 11111100 -> 11111111 11111111 11111111 11111011 (反码) ->

10000000 00000000 00000000 00000100(原码) 十进制为-4

无符号右移运算(>>>)

它把32位数字中的所有数位整体右移。移动时,数字左侧的空位用“0”来填充填充。因此,对于正数,无符号右移运算的结果与有符号右移运算一样。

Javascript支持位操作,如 & ,| , ^ , ~, 分别为与、或、异或、非操作。此外还有移位操作。

这里主要对移位操作进行说明。在看书学习Javascript的过程中多次把位操作尤其是移位操作给略过,今天做一套笔试题,发现里面有不止一道位操作的题,潜下心看了看。

位运算符是在数字底层(即表示数字的32个数位)进行操作的

无符号整数把最后一位作为另一个数位处理。

在有符号整数中,第0-30位为数值位,第31位为符号位。负数存储为二进制补码。(以我的知识判断,其实所有的数包括正数也是以二进制补码的形式存储的,只不过正数的原码和补码相同罢了)

求负数补码的过程:原码——>符号位不变,其他位取反得到反码——>再加1得到补码

有趣的是,把负整数转换成二进制字符串后,ECMAScript 并不以二进制补码的形式显示,而是用数字绝对值的标准二进制代码前面加负号的形式输出。

例如:

  1. var iNum = -18;
  2. alert(iNum.toString(2));//输出 “-10010”

左移运算(<<),它把数字中的所有数位向左移动指定的数量。左移时,数字右边的空位用0填充。

例如,

  1. var iOld = 2;//二进制10
  2. var iNew = iOld << 5;//二进制10 00000 十进制64

有符号右移运算(>>)

它把32位数字中的所有数位整体右移,同时保留该数的符号。移动时,数字左侧的空位用符号位的值填充。

例:

13 >> 2 = 3

1101  -> 11

-13 >> 2 = -4

解释:

10000000 00000000 00000000 00001101(原码) -> 11111111 11111111 11111111 11110010(反码) -> 11111111 11111111 11111111 11110011(补码) ->

11111111 11111111 11111111 11111100 -> 11111111 11111111 11111111 11111011 (反码) ->

10000000 00000000 00000000 00000100(原码) 十进制为-4

无符号右移运算(>>>)

它把32位数字中的所有数位整体右移。移动时,数字左侧的空位用“0”来填充填充。因此,对于正数,无符号右移运算的结果与有符号右移运算一样。

Javascript支持位操作,如 & ,| , ^ , ~, 分别为与、或、异或、非操作。此外还有移位操作。

这里主要对移位操作进行说明。在看书学习Javascript的过程中多次把位操作尤其是移位操作给略过,今天做一套笔试题,发现里面有不止一道位操作的题,潜下心看了看。

位运算符是在数字底层(即表示数字的32个数位)进行操作的

无符号整数把最后一位作为另一个数位处理。

在有符号整数中,第0-30位为数值位,第31位为符号位。负数存储为二进制补码。(以我的知识判断,其实所有的数包括正数也是以二进制补码的形式存储的,只不过正数的原码和补码相同罢了)

求负数补码的过程:原码——>符号位不变,其他位取反得到反码——>再加1得到补码

有趣的是,把负整数转换成二进制字符串后,ECMAScript 并不以二进制补码的形式显示,而是用数字绝对值的标准二进制代码前面加负号的形式输出。

例如:

  1. var iNum = -18;
  2. alert(iNum.toString(2));//输出 “-10010”

左移运算(<<),它把数字中的所有数位向左移动指定的数量。左移时,数字右边的空位用0填充。

例如,

  1. var iOld = 2;//二进制10
  2. var iNew = iOld << 5;//二进制10 00000 十进制64

有符号右移运算(>>)

它把32位数字中的所有数位整体右移,同时保留该数的符号。移动时,数字左侧的空位用符号位的值填充。

例:

13 >> 2 = 3

1101  -> 11

-13 >> 2 = -4

解释:

10000000 00000000 00000000 00001101(原码) -> 11111111 11111111 11111111 11110010(反码) -> 11111111 11111111 11111111 11110011(补码) ->

11111111 11111111 11111111 11111100 -> 11111111 11111111 11111111 11111011 (反码) ->

10000000 00000000 00000000 00000100(原码) 十进制为-4

无符号右移运算(>>>)

它把32位数字中的所有数位整体右移。移动时,数字左侧的空位用“0”来填充填充。因此,对于正数,无符号右移运算的结果与有符号右移运算一样。

Javascript支持位操作,如 & ,| , ^ , ~, 分别为与、或、异或、非操作。此外还有移位操作。

这里主要对移位操作进行说明。在看书学习Javascript的过程中多次把位操作尤其是移位操作给略过,今天做一套笔试题,发现里面有不止一道位操作的题,潜下心看了看。

位运算符是在数字底层(即表示数字的32个数位)进行操作的

无符号整数把最后一位作为另一个数位处理。

在有符号整数中,第0-30位为数值位,第31位为符号位。负数存储为二进制补码。(以我的知识判断,其实所有的数包括正数也是以二进制补码的形式存储的,只不过正数的原码和补码相同罢了)

求负数补码的过程:原码——>符号位不变,其他位取反得到反码——>再加1得到补码

有趣的是,把负整数转换成二进制字符串后,ECMAScript 并不以二进制补码的形式显示,而是用数字绝对值的标准二进制代码前面加负号的形式输出。

例如:

  1. var iNum = -18;
  2. alert(iNum.toString(2));//输出 “-10010”

左移运算(<<),它把数字中的所有数位向左移动指定的数量。左移时,数字右边的空位用0填充。

例如,

  1. var iOld = 2;//二进制10
  2. var iNew = iOld << 5;//二进制10 00000 十进制64

有符号右移运算(>>)

它把32位数字中的所有数位整体右移,同时保留该数的符号。移动时,数字左侧的空位用符号位的值填充。

例:

13 >> 2 = 3

1101  -> 11

-13 >> 2 = -4

解释:

10000000 00000000 00000000 00001101(原码) -> 11111111 11111111 11111111 11110010(反码) -> 11111111 11111111 11111111 11110011(补码) ->

11111111 11111111 11111111 11111100 -> 11111111 11111111 11111111 11111011 (反码) ->

10000000 00000000 00000000 00000100(原码) 十进制为-4

无符号右移运算(>>>)

它把32位数字中的所有数位整体右移。移动时,数字左侧的空位用“0”来填充填充。因此,对于正数,无符号右移运算的结果与有符号右移运算一样。

Javascript支持位操作,如 & ,| , ^ , ~, 分别为与、或、异或、非操作。此外还有移位操作。

这里主要对移位操作进行说明。在看书学习Javascript的过程中多次把位操作尤其是移位操作给略过,今天做一套笔试题,发现里面有不止一道位操作的题,潜下心看了看。

位运算符是在数字底层(即表示数字的32个数位)进行操作的

无符号整数把最后一位作为另一个数位处理。

在有符号整数中,第0-30位为数值位,第31位为符号位。负数存储为二进制补码。(以我的知识判断,其实所有的数包括正数也是以二进制补码的形式存储的,只不过正数的原码和补码相同罢了)

求负数补码的过程:原码——>符号位不变,其他位取反得到反码——>再加1得到补码

有趣的是,把负整数转换成二进制字符串后,ECMAScript 并不以二进制补码的形式显示,而是用数字绝对值的标准二进制代码前面加负号的形式输出。

例如:

  1. var iNum = -18;
  2. alert(iNum.toString(2));//输出 “-10010”

左移运算(<<),它把数字中的所有数位向左移动指定的数量。左移时,数字右边的空位用0填充。

例如,

  1. var iOld = 2;//二进制10
  2. var iNew = iOld << 5;//二进制10 00000 十进制64

有符号右移运算(>>)

它把32位数字中的所有数位整体右移,同时保留该数的符号。移动时,数字左侧的空位用符号位的值填充。

例:

13 >> 2 = 3

1101  -> 11

-13 >> 2 = -4

解释:

10000000 00000000 00000000 00001101(原码) -> 11111111 11111111 11111111 11110010(反码) -> 11111111 11111111 11111111 11110011(补码) ->

11111111 11111111 11111111 11111100 -> 11111111 11111111 11111111 11111011 (反码) ->

10000000 00000000 00000000 00000100(原码) 十进制为-4

无符号右移运算(>>>)

它把32位数字中的所有数位整体右移。移动时,数字左侧的空位用“0”来填充填充。因此,对于正数,无符号右移运算的结果与有符号右移运算一样。

Javascript支持位操作,如 & ,| , ^ , ~, 分别为与、或、异或、非操作。此外还有移位操作。

这里主要对移位操作进行说明。在看书学习Javascript的过程中多次把位操作尤其是移位操作给略过,今天做一套笔试题,发现里面有不止一道位操作的题,潜下心看了看。

位运算符是在数字底层(即表示数字的32个数位)进行操作的

无符号整数把最后一位作为另一个数位处理。

在有符号整数中,第0-30位为数值位,第31位为符号位。负数存储为二进制补码。(以我的知识判断,其实所有的数包括正数也是以二进制补码的形式存储的,只不过正数的原码和补码相同罢了)

求负数补码的过程:原码——>符号位不变,其他位取反得到反码——>再加1得到补码

有趣的是,把负整数转换成二进制字符串后,ECMAScript 并不以二进制补码的形式显示,而是用数字绝对值的标准二进制代码前面加负号的形式输出。

例如:

  1. var iNum = -18;
  2. alert(iNum.toString(2));//输出 “-10010”

左移运算(<<),它把数字中的所有数位向左移动指定的数量。左移时,数字右边的空位用0填充。

例如,

  1. var iOld = 2;//二进制10
  2. var iNew = iOld << 5;//二进制10 00000 十进制64

有符号右移运算(>>)

它把32位数字中的所有数位整体右移,同时保留该数的符号。移动时,数字左侧的空位用符号位的值填充。

例:

13 >> 2 = 3

1101  -> 11

-13 >> 2 = -4

解释:

10000000 00000000 00000000 00001101(原码) -> 11111111 11111111 11111111 11110010(反码) -> 11111111 11111111 11111111 11110011(补码) ->

11111111 11111111 11111111 11111100 -> 11111111 11111111 11111111 11111011 (反码) ->

10000000 00000000 00000000 00000100(原码) 十进制为-4

无符号右移运算(>>>)

它把32位数字中的所有数位整体右移。移动时,数字左侧的空位用“0”来填充填充。因此,对于正数,无符号右移运算的结果与有符号右移运算一样。

后端选择前端开发框架
前端h5页面开发框架
前端开发一定要自己的框架么
» 本文来自:前端开发者 » 《前端Javascript位运算》
» 本文链接地址:https://www.rokub.com/6626.html
» 您也可以订阅本站:https://www.rokub.com
赞(0)
64K

评论 抢沙发

评论前必须登录!