一.位运算符
& 与 都为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")