进值
parseInt(num,8); //八进制转十进制
parseInt(num,16); //十六进制转十进制
parseInt(num).toString(8) //十进制转八进制
parseInt(num).toString(16) //十进制转十六进制
parseInt(num,2).toString(8) //二进制转八进制
parseInt(num,2).toString(16) //二进制转十六进制
parseInt(num,8).toString(2) //八进制转二进制
parseInt(num,8).toString(16) //八进制转十六进制
parseInt(num,16).toString(2) //十六进制转二进制
parseInt(num,16).toString(8) //十六进制转八进制
疑问
> 0001 // 1
> 0010 // 8
> 0100 // 64
> 1000 // 1000
二进制
es6中引入了原生二进制字面量,二进制数的语法是0b开头
parseInt(0b00000000000000000000000000001011, 2)
3
字面量
> 0b0001 // 1
> 0b0010 // 2
> 0b0100 // 4
> 0b1000 // 8
移位
// 左移位
1 << 1 // 2
2 << 1 // 4
4 << 1 // 8
// 右移位
8 >> 1 // 4
4 >> 1 // 2
2 >> 1 // 1
1 >> 1 // 0
无符号右移
-4 >>> 0:查看一个负整数在计算机内部的储存形式,最快的方法就是使用这个运算符
(-4).toString(2) // 错误, "-100"
(-4 >>> 0).toString(2)
'11111111111111111111111111111100'
经典
190. 颠倒二进制位
方法: 逐位颠倒
var reverseBits = function(n) {
let res = 0;
for (let i=0; i<32; i++) {
res <<= 1;
res += n & 1; // 获取末位
n >>= 1;
}
return res >>> 0; // 无符号右移
};
获取末位
0001 & 1 // 1
0010 & 1 // 0
按位取反 (错误思路)
0b00000000000000000000000000000001
1
0b11111111111111111111111111111110
4294967294
~1 // -2
-2 >>> 0 // 4294967294
parseInt(4294967294, 10).toString(2) // "11111111111111111111111111111110"
八进制
chrome中
26进制
171. Excel表列序号
function titleToNumber(columnTitle: string): number {
let res: number = 0;
for (let i: number = 0; i < columnTitle.length; ++i) {
res = res * 26 + columnTitle.charCodeAt(i) - 64;
}
return res;
};
168. Excel表列名称
📢 让除数减一,那么余数自然就少一,原来余 1 的变成余 0
—columnNumber;
function convertToTitle(columnNumber: number): string {
let res: string[] = [];
while (columnNumber > 0) {
--columnNumber;
let num: number = columnNumber % 26;
res.unshift(String.fromCharCode(num + 65));
columnNumber = Math.floor(columnNumber / 26);
}
return res.join('');
};