js中进制、位运算
js中进制
0b开头表示二进制
0开头表示八进制
0x开头表示十六进制
100 //是10进制,100 0100 //是八进制64 0b100//是二进制 4 0x100//是十六进制256
其他进制转十进制
parseInt(string, radix) //解析一个字符串并返回指定基数的十进制整数, radix 是2-36之间的整数,表示被解析字符串的基数。 parseInt(1010,2)//10 parseInt(10,8)//8
十进制转二进制
//使用toString(2) let number = 10 console.log(number.toString(2)); // 1010
算法题:191. 位1的个数
位运算
1、按位或
3|2//3,转成2进制,011与010按位或 011,值为3
2、按位与
3&2//2,转成2进制,011与010按位与 010,值为2
应用:
const type={ listen: 1,//听 speak: 2,//说 read: 4, //读 write: 8,//写 } power=11;//1+2+8=11,只有听\说\写的权限 if(power&type.listen){ console.log("具备听的能力") } if(power&type.speak){ console.log("具备说的能力") } if(power&type.read){ console.log("具备读的能力") } if(power&type.write){ console.log("具备写的能力") }
3、零填充左位移
<< 通过从右推入零向左位移,并使最左边的位脱落。
5<<1//0101,向左位移1位为1010,等于10
应用:
//_content: 100663072 var content={ toolset: 1 << 1, supportzyj: 1 << 2, enableVideo: 1 << 3, } //后台通过第n位表示某参数权限,通过按位与判断权限是否存在 export default function formatOrgSetting(orgSetting) { const os = {}; for (const key in OrgConfig) { for (const field in OrgConfig[key]) { os[field] = (orgSetting[key] & OrgConfig[key][field]) > 0; } delete orgSetting[key]; } return Object.assign(os, orgSetting); }