JS第五节 位运算符与内置对象

一.位运算符
    &   与      都为1结果为1
    |   或      只要有1结果就为1
    ^   异或    相同为0,不同为1
    ~   非      0变1,1变0       (转2进制,加1,转10进制,加负号)
    >>  右移    
    <<  左移    
    >>> 无符号右移
    
      ~ 非      0变1,1变0
            ~正数 ~n=>  -(n+1)   ~12  -13
                                 ~16  -16
            ~负数       (|n|-1)   ~-12  11
                                 ~-14  13


(1)&
3&2    011
    &  010
    -----------
       010-------2

5&3    101
       011
    ---------
        001
(2)|
5&3   101
      011
------------
      111 -----7
(3)^
3^2    011
       010
----------------
        001

(4)~
~3     011
---------------
        100------ -4
 
 js数值类型---64位
 32位 最高位是符号位


    32位    最高位-符号位
    
    18  --  10010
    00000000 00000000 00000000 00010010

    -18
    11111111 11111111 11111111 11101101 取反
    11111111 11111111 11111111 11101110 加一

    ~18     得-19
    00000000 00000000 00000000 00010010
    11111111 11111111 11111111 11101101 ~后
    11111111 11111111 11111111 11101100 减一
    00000000 00000000 00000000 00010011 取反    19
                                        加负号  -19

    ~3
    00000000 00000000 00000000 00000011 3
    11111111 11111111 11111111 11111100 ~后
    11111111 11111111 11111111 11111011 减一
    00000000 00000000 00000000 00000100 取反 4
                                        加负号 -4


//练习
    25&3 = 1
    25|3 = 27
    25^3 = 26
    ~25 = -26


    负数  取反 加一

左移<<
2<<5    向左移动5位

00000000 00000000 00000000 00000010  2
00000000 00000000 00000000 01000000  左移5位,空出的低位补0

-2<<5

11111111 11111111 11111111 11111101
11111111 11111111 11111111 11111110 -2
11111111 11111111 11111111 11000000 左移5位
00000000 00000000 00000000 01000000 64 加负号 -64


64>>5

00000000 00000000 00000000 01000000  64
0000000000000 00000000 00000000 010  2

-64>>5

00000000 00000000 00000000 01000000  64
11111111 11111111 11111111 10111111  取反
11111111 11111111 11111111 11000000  加一
1111111111111 11111111 11111111 110  有符号右移,看符号位
                                     如为1,补1
1111111111111 11111111 11111111 101
0000000000000 00000000 00000000 010  -2


-64>>>5
11111111 11111111 11111111 11000000  -64
0000011111111 11111111 11111111 110  无符号右移,不看符号位
                                     高位全部补0

//练习

13>>2  = 3
-13>>2 = -4
9<<4   = 144
255&85 = 85
~15    = -16
~-15   = 14


00000000 00000000 00000000 00001101 13
11111111 11111111 11111111 11110010 取反
11111111 11111111 11111111 11110011 加一
1111111111 11111111 11111111 111100 右移
1111111111 11111111 11111111 111011 减一
0000000000 00000000 00000000 000100 取反
0000000000 00000000 00000000 000100 4 加负号 -4

00000000 00000000 00000000 00001111 15
11111111 11111111 11111111 11101111 减一
00000000 00000000 00000000 00010000 取反 16加负号-16


二.三目(三元)运算符 ? :
a=10
if(a>0){
    alert("yes")
}else{
    alert("no")
}

a>0? alert("yes"): alert("no")

三.js内置对象
    var d1 = new Date() //当前时间
    console.log(d1)
    console.log(d1.getDate())//日
    console.log(d1.getDay());//星期
    console.log(d1.getHours());//小时
    console.log(d1.getMinutes());//分钟
    console.log(d1.getMonth());//月份
    console.log(d1.getSeconds());//秒
    console.log(d1.getTime());//返回1970年1月1日0时
    console.log(d1.getFullYear());//年


    //格式化日期对象:
    console.log(d1.toLocaleDateString());//2022/7/1
    console.log(d1.toLocaleString());//2022/7/1 11:2
    console.log(d1.toLocaleTimeString());//11:26:42

    // 日期格式化实现formatDate("-")---2022-07-01
    //              formatDate("/")---2022/07/01
    //              formatDate("zh")---2022年07月01日

        function formatDate(type){
            var d = new Date();
            if(type=="zh"){
                console.log(d.getFullYear()+"年"+(d.getMonth()+1)+"月"+d.getDate()+"日")
            }else{
                console.log(d.getFullYear()+type+(d.getMonth()+1)+type+d.getDate())
            }
        }
         var ndate = formatDate("zh")


----原型封装----
    Date.prototype.formatDate=function(type){
            var d = new Date()
            var y = d.getFullYear()
            var m = d.getMonth()+1
            var r = d.getDate()
            if(type=="zh"){
                return(y+"年"+m+"月"+r+"日")
            }else{
                return(y+type+m+type+r)
            }
        }

        var d2= new Date()
       var ndate = d2.formatDate("-")
       alert(ndate)


日期格式化----升级版
formatdate("yyyy-MM-dd hh:mm:ss")
formatdate("yyyy-MM-dd")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值