“<<”运算符

  • “<<”运算符执行左移位运算。在移位运算过程中,符号位始终保持不变。如果右侧空出位置,则自动填充为 0;超出 32 位的值,则自动丢弃。
  • 运算 5 << 2
第一个数的位值 左移2位运算结果
0 1
0 0
1 1
0 0
1 0

把数字 5(二进制为101) 向左移动 2 位得出(二级制10100)转换成10进制为20

// 计算2的n次方
var n = 3
console.log(1<<n) // 2的3次方 = 8

“>>”运算符

  • “>>”运算符执行有符号右移位运算。与左移运算操作相反,它把 32 位数字中的所有有效位整体右移,再使用符号位的值填充空位。移动过程中超出的值将被丢弃。
  • 运算 5 >> 2
第一个数的位值 右移2位运算结果
0 0
0 0
1 0
0 0
1 1

把数字 5(二进制为101) 向右移动 2 位得出(二级制1)转换成10进制为1

  • 运算 -1000 >> 8
    用算式进行演示,如图所示。当符号位值为 1 时,则有效位左侧的空位全部使用 1 进行填充。
//取半: >>
var num2 = 300
console.log(num2 >> 1) // 150
var num3 = 321
console.log(num3 >> 1) // 160 会舍去小数

“>>>”运算符

  • “>>>”运算符执行无符号右移位运算。它把无符号的 32 位整数所有数位整体右移。对于无符号数或正数右移运算,无符号右移与有符号右移运算的结果是相同的。

– 在正数情况下,>> 和 >>>返回是相同的

console.log(1000 >> 8);  //返回值3
console.log(1000 >>> 8);  //返回值3

– 在负的情况下不同的是:
对于负数来说,无符号右移将使用 0 来填充所有的空位,同时会把负数作为正数来处理,所得结果会非常大所以,使用无符号右移运算符时要特别小心,避免意外错误。

console.log(-1000 >> 8);  //返回值 -4
console.log(-1000 >>> 8);  //返回值 16777212
* -5 >>> 2
* -5无符号右移2位
* -5的原码:10000000 00000000 00000000 00000101
* -5的补码:11111111 11111111 11111111 11111010
* 右移两位:   11111111 11111111 11111111 11111010
* 高位补0: 00111111 11111111 11111111 111110
* 求得10进制为1073741822

>>:带符号右移。正数右移高位补0,负数右移高位补1

>>>:无符号右移。无论是正数还是负数,高位通通补0

移位运算符(<<、>>和>>>)相关推荐

  1. java中的移位运算符

    移位运算符是在数字的二进制形式上进行平移.主要有左移(<<).带符号右移(>>)以及无符号右移(>>>). 左移运算符(<<)的运算规则为:按二进 ...

  2. python左移位运算_python移位运算符

    1,二进制方式 >>> bin( 1)'0b1' >>> bin( 10)'0b1010' >>> a =0b10>>>a2 & ...

  3. java 偏移符号_java中的移位运算符总结

    java中的移位运算符:<>,>>>总结 java中有三种移位运算符 << : 左移运算符,num << 1,相当于num乘以2 >> ...

  4. java中 移位运算_java中关于移位运算符的demo与总结(推荐)

    首先,移位运算符有三种,其操作类型只支持:byte / short / char / int和long五种. << 左移运算符,表示将左边的操作数的二进制数据向左移动*位,移动后空缺位以0 ...

  5. java学习(21):移位运算符

    //移位运算符 public class test{ public static void main(String[] args){ int num=3; //向左移位 System.out.prin ...

  6. java中的位移运算符_java中的移位运算符(, , )

    java中有3种移位运算符 < >>  :  右移运算符,不改变符号位,num >> n 表示二进制右移n位,结果相当于 num / (2的n次方) >>&g ...

  7. verilog 移位运算符 说明_Verilog学习笔记基本语法篇(二)·········运算符...

    Verilog HDL的语言的运算符的范围很广,按照其功能大概可以分为以下几类: (1)算术运算符+,-,*,/,% 优先顺序 !~ *  /   % +    - <<    >& ...

  8. 关于Java中“+”加运算符和“”向前移位运算符混合使用时出现的错误

    1 致谢 感谢张晓龙院长编写的<Java程序设计与开发>提供的资料 2 问题描述 今天遇到1个很奇怪的问题 写一句很简单的运算代码就出错了 想不明白为什么  当时的初衷是这样的:想要完成1 ...

  9. 2 lt lt 8运算 java_Java移位运算符 lt;lt; gt;gt; gt;gt;gt;_Java_七九推

    简述 java有三种移位运算符,分别为: 左移运算符 << 右移运算符 >> 无符号右移运算符 >>> 首先,移位运算符根据名字可知是使用二进制进行运算的.在 ...

  10. 【C语言】利用队列的思维理解移位运算符和移位函数

    在c语言中,尤其是单片机的C51中,移位运算操作很常见.实现移位操作的方法有两种:一是利用移位运算符,二是利用移位函数. 目录 一.移位运算符 1.左移 2.右移 二.循环移位函数 三.移位运算符和循 ...

最新文章

  1. oracle fmis 是什么系统?,FMSQL
  2. Javascript Array对象
  3. 三层交换机如何封装trunk_锐捷交换机常用配置命令汇总
  4. android 获取设备串号,Android获取设备IMEI和Mac地址
  5. 一份C++学习资源整理,咬牙切齿地好用。
  6. 如何用java语言调用tensorflow训练好的模型
  7. 垃圾收集算法,垃圾收集器_确定活动的热点垃圾收集器
  8. atom配置python环境_Python编程:用VScode配置Python开发环境
  9. xshell 连接错误: Could not connect to '127.0.0.1' (port 22): Connection failed.
  10. LabVIEW使用 NI Package Manager(NIPM)修复软件
  11. Photoscan空三成果导入到ContextCapture(smart3d)生成倾斜模型教程
  12. [spring源码学习]一、IOC简介
  13. 万圣节到了,来讲鬼故事吧!(大家可以在回复中继续讲)
  14. 【绝对干货】Swift是花拳绣腿吗?从Swift谈开发语言与程序员的职业发展
  15. 贝壳云P1刷机记录(5.10内核Armbian)
  16. hexo 实现主页每日一言功能
  17. VC浏览器相关的学习(一)(Single document界面)
  18. Harris角点检测,及其Matlab和OpenCV实现
  19. 在vue中使用canvas实现简单特效(下雨天)
  20. 阿里最强 Python 自动化工具开源了!

热门文章

  1. ElementUI-table切页保存已勾选和被取消勾选(附默认选中)
  2. 【异常记录】C# 连接数据库错误异常解决 err:40
  3. 乐见 SOA 和 EA 融合之势
  4. 比你拼命的人多的是,最可怕的是比你牛的人比你还拼命(每天看一段一个月刚刚好)
  5. GBase产品学习-GBase 8s中查看数据库
  6. 清理docker的overlay2日志释放磁盘空间
  7. top和margin-top等的区别
  8. fx5u以太网通讯设置_图文简述三菱FX 5U以太网通讯的8大功能,你会用几种?
  9. 用Facebook做广告和营销,你需要注意哪些问题?
  10. 驱动器开发:开源库汇总