JavaScript操作符(一元操作符)
JavaScript操作符包括算术操作符、位操作符、关系操作符和相等操作符。只能操作一个值的操作符叫做一元操作符。
递增和递减操作符
递增和递减操作符有两个版本:前置型和后置型。前置型操作符位于要操作的变量之前,后置型操作符位于要操作的变量之后。
需要将一个变量的值在使用前就进行加减操作,一般使用前置操作符。
var age=18;
console.log(++age);//前置型操作符是先计算,返回计算后的值。输出为19
console.log(age);//输出19;
console.log(--age);//输出18
var age1=18;
console.log(age1++);//后置型操作符是在包含该语句执行后,才进行加减操作的,此时age1是18
console.log(age1);//此时age1已经变为19;
console.log(age1--);//此时age1依然是19;
从上面大家应该能看出来前置型操作与后置型操作符的区别。前置型操作符,在使用该变量之前已经进行++或者--操作,而后置型操作符是先使用该变量,然后再进行++或者--操作的。
一元加减操作符
大多数开发人员对一元加减操作符都不陌生,一元+操作符放在数值前面,对数值不会产生影响。一元减操作符(-)用于表现负数,如-1.
位操作符
位操作符用于在最进本的层次上,即按内存中表示数值的位来操作数值。JavaScript中的所有数值以IEEE-754 64位格式存储,但位操作符并不直接操作64位的值。而是先将64位的值转换为32位的整数,然后执行操作,最后将结果转回64位。
对于有符号的整数,32位中的前31位表示整数的值,最后一位表示数值的符号:0表示整数,1表示负数。表示符号的位叫做符号位,符号位的值决定了数值的格式。其中,整数易二进制格式存储。31位中每一位都表示2的幂,第一位是2^0,第二位是2^1,没用用到的位用0补充,可以忽略。如数值123,二进制表示为00000000000000000000000011110110,也可以表示为11110110。1*2^6+1*2^5+1*2^4+1*2^3+0*2^2+1*2^1+1*2^0.
负数也是以二进制来表示,但是使用的是二进制的补码。计算一个数值的二进制补码需要经过以下步骤:
1.先求这个数值的绝对值的二进制编码;
2.求二进制反码,将二进制码的0替换1,1替换为0
3.将二进制的反码加1.
如-123的二进制编码为:123的二进制编码,0000 0000 0000 0000 0000 0000 1111 0110,反码:1111 1111 1111 1111 1111 1111 0000 1001,加1:1111 11111 11111 11111 11111 0000 1010
按为非(~)
按位非操作符由一个波浪线表示,执行按位非操作符其实就是求这个数值的反码。结果是这个数值的负数减去1.
var num=20;
console.log(~num);//输出-21
var num2=-20;
console.log(~num2);//输出19
按位与(and)
按位与操作符由一个字符&表示,它有两个操作符数。按位与就是将两个数值的每一位对齐。只有两个数值的位都为1的时候返回1.其他返回0.如 12&10,输出结果为8
0000 0000 0000 0000 0000 0000 0001 1000
0000 0000 0000 0000 0000 0000 0001 0100
0000 0000 0000 0000 0000 0000 0001 0000
按位或(or)
按位或操作符由一个(|)表示,也有两个操作数。按位或操作符在有一个为1的 情况下就返回1,只有两个同时为0才返回0.如12|10,输出结果为14.
0000 0000 0000 0000 0000 0000 0001 1000
0000 0000 0000 0000 0000 0000 0001 0100
0000 0000 0000 0000 0000 0000 0001 1100
按位异或(Xor)
按位异或操作符用一个(^)来表示。按位异或操作符在对应的数值上只有一个1时才返回1,若有两个1或者两个0则返回0.如12^10,输出结果为6
0000 0000 0000 0000 0000 0000 0001 1000
0000 0000 0000 0000 0000 0000 0001 0100
0000 0000 0000 0000 0000 0000 0000 1100
左移操作符
左移操作符由两个小于号组成(<<),这个操作符会将数值的所有为向左移动指定的位数。如果将数值2(10)向左移动5位,结果就是64(1000000)。左移后,右侧空出的位置用0补充。
var num=2;
var num1=2<<5;
console.log(num1);//
console.log(num1.toString(2));//
右移操作符
右移操作符由两个大于号(>>)组成,有符号右移操作符向右移动,并保留符号位。有符号的右移与左移正好相反,64向右移动5位,值为2.
var num=64;//1000000;
var num1=num>>5;
console.log(num1.toString(2));//
console.log(num1);//
无符号右移操作符由三个大于号(>>>)组成,运算符将 expression1 的位右移 expression2 中指定的位数。 用零填充右移后左边空出的位。 右移的位被丢弃.
var temp
temp = -14 >>> 2
变量 temp 具有初始值 -14(二进制补码 11111111 11111111 11111111 11110010)。 其右移两位后,值等于 1073741820(即二进制的 00111111 11111111 11111111 11111100)。
JavaScript操作符(一元操作符)的更多相关文章
- 【javascript基础】函数前面的一元操作符
在函数前面加:+ ; ~ ! - 等等一元操作符,javascript 引擎都会将后面的statement转换成表达式(expression),这样就可以调用了.
- javascript中的操作符详解1
好久没有写点什么了,根据博主的技术,仍然写一点javascript新手入门文章,接下来我们一起来探讨javascript的操作符. 一.前言 javascript中有许多操作符,但是许多初学者并不理解 ...
- ECMAScript一元操作符
在ECMAScript中提供了一元操作符进行简单的运算,一元操作符是ECMAScript中最简单的操作符,它只能对一个值进行操作. 一元操作符有两种类型,一种是递增和递减操作符,一种是一元加和一元减操 ...
- JS中的一元操作符
表达式 一元操作符 优先级 结合性 运算顺序 表达式是什么? 就是JS 中的一个短语,解释器遇到这个短语以后会把对它进行计算,得到一个结果参与运算,我们把这种要参与到运算中的各种各样的短语称为表达式. ...
- Java一元操作符++详解
废话不多说,直接上代码. package com.coshaho.learn; /** * * OperatorLearn.java Create on 2016-11-13 下午8:38:15 * ...
- JavaScript中“&&”和“||”操作符的意义,深入理解和使用场景
一.概念 与其他语言不同,在js中,逻辑运算符可以返回任何类型的数据,不仅仅是true和false. &&和||的返回值是两个操作数的其中一个.即a&&b或者a||b ...
- 全面解析JavaScript中“&&”和“||”操作符(总结篇)
1.||(逻辑或), 从字面上来说,只有前后都是false的时候才返回false,否则返回true. ? 1 2 3 4 alert(true||false); // true alert(false ...
- Kotlin——最详细的操作符与操作符重载详解(上)
本篇文章为大家详细的介绍Koltin特有的操作符重载.或许对于有编程经验的朋友来说,操作符这个词绝对不陌生,就算没有任何编辑基础的朋友,数学中的算数运算符也绝不陌生.例如(+.-.*./.>.& ...
- JS规则 保持先后顺序(操作符优先级)操作符之间的优先级(高到低): 算术操作符 → 比较操作符 → 逻辑操作符 → "="赋值符号
保持先后顺序(操作符优先级) 我们都知道,除法.乘法等操作符的优先级比加法和减法高,例如: var numa=3; var numb=6 jq= numa + 30 / 2 - numb * 3; / ...
随机推荐
- 深入探讨List<>中的一个姿势。
List<>是c#中很常见的一种集合形式,近期在阅读c#源码时,发现了一个很有意思的定义: [DebuggerTypeProxy(typeof(Mscorlib_CollectionDeb ...
- C# 判断文件是否文本文件
在网上查了好多资料,大部分都是通过将文件读成二进制流,取前两个字节判断,比如.jpg的是255216.代码如下: ); i++; }return isTextFile; }catch (Excepti ...
- sysbench
安装 http://www.cnblogs.com/zhoujinyi/archive/2013/04/19/3029134.html http://space.itpub.net/758322/vi ...
- 提高运维效率(二)桌面显示IP
运维人员远控电脑询问IP时,总要告诉用户找ip的步骤,岂不很烦? 以下方法直观地把ip地址显示在桌面上,再做个入职培训,即可提高运维效率. 1. 下载bginfo.exe软件,放到域控下的netlo ...
- python学习笔记 list
1.list中的任一元素可以是任一类型.可以是混合的,如,前两个字符串后面的是数字.都是可以的. 2.可以用-1表示最后一个元素. 3.注意不要越界. 4.len(mates) 用来计算list的大小 ...
- 关于SpringBoot bean无法注入的问题(与文件包位置有关)改变自动扫描的包
原因:同事在写demo时出现bean加了@component后却无法被spring扫描到(在编译的时候IDEA就提示拿不到对应的bean)的问题. 后来经过研究是跟文件包的位置有关的. springb ...
- SQL知识目录
SQL理论知识 -------理论知识总结 -------理论知识总结 -------理论知识总结 -------理论知识总结 -------理论知识总结 -------理论知识总结 -------理 ...
- [flask实践] 解决qq邮箱/mysql的相关配置问题
笔者经过flask web(Miguel著,封面是一条狗)一书的学习,打算实现一个旅游类网站,在此过程中发现,相对于书中的flasky博客程序,需要作出一些改变: 1. 注册邮箱:国内要使用126,q ...
- (12.05)Java小知识!
今天与大家分享关于抽象类的知识点. 抽象类: 抽象类应用场景:在某种情况下,某个父类只是知道子类应该包含怎样的方法,但无法准确的知道这些子类如何实现这些方法. 从多一个具有相同特征的类中抽象出一个抽 ...
- JavaScript OOP(一)之构造函数与new命令
面向对象编程:Object Oriented Programming,简称OOP. 典型的oop语言,如hava.c++,存在着类的概念,类就是对象的模板 (类可以类比为人类:而实例化类后变为对象,对 ...