zoukankan      html  css  js  c++  java
  • 经典操作符示例

    经典操作符示例

    1、【~】操作符

    1. var ret = 15;

    2. console.log(ret); //15 
    3. ret = ~ret;
    4. // 00000000 00000000 00000000 00001111  这是正数15在计算机里面的原码(符号位是0)
    5. // 10000000 00000000 00000000 00001111  这是负数15在计算机里面的原码(符号位是1)
    6. // 10000000 00000000 00000000 00010000  减去1后(相当于加负数1)
    7.  
    8. console.log(ret); //-16
    9.  

    2+】转number操作

     

    1. var s ='50';
    2. console.log(typeof s);//string
    3. console.log(s===+s);
    4. //false
    5. s =50;
    6. console.log(s===+s);//true
     

    3+】字符连接

     

    1. console.log(3+5);//8
    2. console.log(3+'5');// '35'
    3. console.log('2'+7);// '27'
    4. console.log(true+false);// 1
    5. console.log(3+null);// 3
     

    4<<】按位左移

     

    1. var val =5;
    2. //00000000 00000000 00000000 00000101 这是正数5在计算机里面的原码(符号位是0)
    3. //00000000 00000000 00000000 00010100 ← 丢弃左边 右边补0
    4. var ret = val<<2;
    5. console.log(ret);
    6. // 20
    7. val =-5;
    8. //10000000 00000000 00000000 00000101 这是负数5在计算机里面的原码(符号位是1)
    9. //11111111 11111111 11111111 11111010 这是负数5在计算机里面的反码(符号位不变,其他位取反)
    10. //11111111 11111111 11111111 11111011 这是负数5在计算机里面的补码(反码+1)
    11. //11111111 11111111 11111111 11101100 ← 丢弃左边 右边补0
    12. //10000000 00000000 00000000 00010011 转为反码(符号位不变,其他位取反)
    13. //10000000 00000000 00000000 00010100 转为补码(反码+1)
    14. var ret = val<<2;
    15. console.log(ret);// -20
     
     

    5>>】按位右移

    1. var val =5;
    2. //00000000 00000000 00000000 00000101 这是正数5在计算机里面的原码(符号位是0)
    3. //00000000 00000000 00000000 00000001 →[01]→丢弃→左边补0
    4. var ret = val>>2;
    5. console.log(ret);
    6. //1
    7. val =-5;
    8. //10000000 00000000 00000000 00000101 这是负数5在计算机里面的原码(符号位是1)
    9. //11111111 11111111 11111111 11111010 这是负数5在计算机里面的反码(符号位不变,其他位取反)
    10. //11111111 11111111 11111111 11111011 这是负数5在计算机里面的补码(反码+1)
    11. //11111111 11111111 11111111 11111110 →[11]→丢弃→左边补1
    12. //10000000 00000000 00000000 00000001 转为反码(符号位不变,其他位取反)
    13. //10000000 00000000 00000000 00000010 转为补码(反码+1)
    14. var ret = val>>2;
    15. console.log(ret);// -2
     

    6>>>】按位无符号右移

     

    1. var val =5;
    2. //00000000 00000000 00000000 00000101 这是正数5在计算机里面的原码(符号位是0)
    3. //00000000 00000000 00000000 00000001 →[01]→丢弃→左边补0
    4. var ret = val>>>2;
    5. console.log(ret);
    6. //1
    7. val =-5;
    8. //10000000 00000000 00000000 00000101 这是负数5在计算机里面的原码(符号位是1)
    9. //11111111 11111111 11111111 11111010 这是负数5在计算机里面的反码(符号位不变,其他位取反)
    10. //11111111 11111111 11111111 11111011 这是负数5在计算机里面的补码(反码+1)
    11. //00111111 11111111 11111111 11111110 →[11]→丢弃→左边补0
    12. var ret = val>>>2;
    13. console.log(ret);// 1073741822
     

    7【in】判断属性的归属

    1. var obj ={ x:20, y:30}; 
    2. console.log('x' in obj); //true 注意必须加引号
    3. console.log('y' in obj); //true 注意必须加引号
    4. console.log('z' in obj); //false 注意必须加引  var arr = [2,'a',5];//该数组的索引是:0、1、2 
    5. console.log(0 in arr);   //true  
    6. console.log('0' in arr); //true 
    7. console.log(1 in arr);   //true  
    8. console.log('1' in arr); //true 
    9. console.log(2 in arr);   //true  
    10. console.log('2' in arr); //true  
    11. console.log(5 in arr);   //false 因为没有5这个索引
    12. console.log('5' in arr); //false 因为没有5这个索引
     

    8==】和【===

     //思考一下,它如何比较? 

    //如果以布尔型比较,则两个操作数都需要转换 

    //如果以字符型比较,则只需要把0转换为'0'即可,发现不可能 

    //如果以数字型比较,则只需要吧''转换为0即可。

     //通过对象,它是以数字型去比较。 

    1. console.log(0=='');//true 
    2. //不转型,直接比较 
    3. console.log(0==='');//false
    4.  
    5. console.log(null==undefined);//true 【==】操作符先把null和undefined都转型为false后才比较。
    6. console.log(null===undefined);//false 【===】操作符直接比较,不做转型。
    7. //无论如何比较,NaN都不等于它本身。
    8. console.log(NaN==NaN);//false  
    9. console.log(NaN===NaN);//false //怎么理解?//你可以把NaM它想象为字面量对象,//每当你写下一个字面量对象的时候,//它都是世界上独一无二的!
    10. console.log({x:1,y:2}=={x:1,y:2}); //false
    11. console.log({x:1,y:2}==={x:1,y:2});//false
     

    9、三元运算

     

    1. //当第一个表达式是真值的时候,
    2. //返回表达式2,否则返回表达式3
    3. var rs =0?'真值':'假值';
    4. console.log(rs);// '假值'
     
     

    10delete操作符

    1. //示例:删除对象属性
    2. var obj ={ a:2, b:3, c:4, d:5};
    3. console.log(obj);
    4. //Object {a: 2, b: 3, c: 4, d: 5}
    5. var rt =delete obj['c'];
    6. // 或者这样:delete obj.c;
    7. console.log(obj);//Object {a: 2, b: 3, d: 5}
    8. var rs ='c' in obj;
    9. console.log(rs);//false
    10. //示例:删除数组元素
    11. var arr =['a','b','c',4,5,6];
    12. console.log(arr);// ["a", "b", "c", 4, 5, 6]
    13. var rs =delete arr[2];//删除第三个元素,即c元素
    14. console.log(arr);// IE:a,b,,4,5,6 chrome:["a", "b", 3: 4, 4: 5, 5: 6]
     

    11debugger

     

    1. function fn(a){
    2. if(!a){
    3. debugger;
    4. //相当于在这一行手动打了个断点
    5. var a,b=3;
    6. console.log(b);
    7. }}
    8. fn(0);

    1. publicclass A{
    2. publicstaticvoid main(String[] args){
    3. int a=10;
    4. System.out.println(~a);
    5. }
    6. }
    7. //输出结果为-11(~是按位取反操作符)
     

    此题输出结果为什么是-11呢?要解决此问题,

           得明白整型在计算机是怎么存储的,

           它是以二进制补码形式存储的,占4个字节即32位。

      10二进制表示为: 00000000 00000000 00000000 00001010 (第一位代表符号位,0为正,1为负)

      10补码保持不变: 00000000 00000000 00000000 00001010

    ~10二进制表示为: 11111111 11111111 11111111 11110101

    ~10补码取反加1为:10000000 00000000 00000000 00001011(负数第一位符号位保留)

     即结果为-11





  • 相关阅读:
    js获取或设置当前窗口url参数
    ping域名怎么用?通过ping域名我们能看见什么?
    css中的zoom
    transition(属性渐变)、animation(动画)
    做一个input搜索框
    float 与 position 剪不断理还乱的关系
    PHP判断FORM来的数据是否为整数
    合并两个数组的两种方式的异同
    了解thinkphp(五)
    了解ThinkPHP(四)
  • 原文地址:https://www.cnblogs.com/moyuling/p/d259b06c8789d471bd078fb87c8b6cd6.html
Copyright © 2011-2022 走看看