二进制相关

一、十进制 转 二进制

	 f1 利用:num.toString(2)转二进制
	 f2 利用栈:
		循环至n为0:n对2的余数入栈;n除2,取整;
		依次出栈;
function toB (num) {
	let res = ''
	const stack = new Stack();
	while (num) {
		stack.push(num % 2)
		num = parseInt(num / 2)
	}
	while (stack.length()) {
		res += stack.pop()
	}
	return res
}

二、按位运算

  let n=10;
  1. n>>1 , 右移1位,除2

  2. n<<1 , 左移1位,乘2

  3. n=n^(n-1) 将最后1个1转为0
    如,LeetCode 191. 位1的个数

    • 法1:toString + for遍历数1,时间:遍历s,O(n);空间:字符串的长,O(n);
    • 法2:利用位的性质
      let res=0;
       while(n){
           n&=n-1;
           res++;
       }
        return res;	
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值