重要但是少用的运算符

小编 2026-06-05 阅读:1955 评论:0
先了解1.原码,反码,补码正数的反码和补码都与原码相同。负数的反码为对该数的原码除符号位外各位取...

先了解

1.原码,反码,补码

正数的反码和补码都与原码相同。
负数的反码为对该数的原码除符号位外各位取反。
负数的补码为对该数的原码除符号位外各位取反,然后在最后一位加1   

2. 负数在计算机中是怎么存的

首先声明在计算机中负数的存储是采用二进制补码的形式的
以-3为例,32位为基础:
原码:00000000 00000000 00000000 00000011
反码:11111111 11111111 11111111 11111100
补码:11111111 11111111 11111111 11111101

1. 按位与运算符 &

对两个表达式执行按位"与"。
每一个位执行按位“与”运算。 如果两个位均为 1,则结果是 1。 否则,结果为 0。

/ 9 is 00000000000000000000000000001001var expr1 = 9;// 5 is 00000000000000000000000000000101var expr2 = 5;// 1 is 00000000000000000000000000000001var result = expr1 & expr2;document.write(result);// Output: 1

2.按位或运算符 |

对两个表达式执行按位“或”运算。
任何时候,只要其中任意一个表达式有一位为 1,则结果中的该位即为 1。否则,结果中的该位将为 0。

7|11// 157:   0000011111:  000010117|11:00001111

3.按位异或运算符 ^

对两个表达式执行按位“异或”运算。
当且仅当只有一个表达式的某位为 1 时,结果中的该位才为 1。否则,结果中的该位为 0。

5^12//90101   (expression1)1100   (expression2)----1001   (result)

4.按位取反运算符 ~

所有一元运算符(如 ~ 运算符)都按照下面的规则来计算表达式的值:

  • 如果应用于未定义的表达式或 null 表达式,则会引发一个运行时错误。
  • 将对象转换为字符串。
  • 如果可能,将字符串转换为数字。否则,将引发运行时错误。
  • 布尔值被视为数字(如果为 false,则为 0;如果为 true,则为 1)。


    运算符将应用于结果数字。
    ~ 运算符查看表达式的二进制表示形式的值,并执行位非运算。
    表达式中的任何一位为 1,则结果中的该位变为 0。表达式中的任何一位为 0,则结果中的该位变为 1。
    下面的示例阐释了位非 (~) 运算符的用法。

    var temp = ~5;
    表达式二进制值(2 的补数)十进制值
    500000000 00000000 00000000 000001015
    ~511111111 11111111 11111111 11111010-6

可以总结为: ~a = -(a+1)

5.按位左移运算符 <<

左移表达式的位。

var temptemp = 14 << 2//变量 temp 的值为 56,因为 14(即二进制的 00001110)左移//两位等于 56(即二进制的 00111000)

6.按位右移运算符 >>

右移表达式的位,保持符号不变。

var temptemp = -14 >> 2//temp 的值为 -4:因为 -14(即二进制的 11110010)右移两位后等于 -4(即二进制的 11111100)。

如果有疑问,参考文章开头 负数在计算机中是怎么存的

7.无符号右移位运算符 >>>

变量值右移表达式值指定的位数,但不保持符号,并将结果赋给该变量。

var temptemp = -14temp = temp >>> 2

变量 temp 的初始值为 -14(二进制补码为 11111111 11111111 11111111 11110010)。向右移两位后,该值等于 1073741820(二进制为 00111111 11111111 11111111 11111100)。
怎么换算 00111111 11111111 11111111 11111100 为 十进制,parseInt('00111111 11111111 11111111 11111100',2)

8. 逗号运算符 ,

顺序执行两个表达式。
, 运算符会导致按从左到右的顺序执行表达式。 , 运算符的常见用法是在 for 循环的增量表达式中使用。例如:

j=25;for (i = 0; i < 10; i++, j++){   k = i + j;}

for 语句只允许在每次通过循环的结尾时执行单个表达式。 , 运算符允许将多个表达式视为单个表达式,因此这两个变量都可以递增。
其实,正常的语句也是可以执行的,比如: console.log(a),alert('1')

9. void 运算符

禁止表达式返回值。
void 运算符计算其表达式,并返回 undefined。 当应计算表达式,但又不希望脚本的其他部分看见其结果时,该运算符很有用。


javascript 运算符

版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

热门文章
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
标签列表