摘要:最近补充了一些位运算的知识,深感位运算的博大精深,此文作为这个系列的总结篇,在此回顾下所学的位运算知识和应用,同时也补充下前文中没有提到的一些位运算知识。 把一个数变为大于等于该数的最小的2的幂 一个数为2的幂,那么该数的二进制码只有最高位是1。根据这个性质,我们来举个栗子,比如有数字10,转为二...
阅读全文
摘要:接上文 "leetcode 位运算题目汇总(上)" ,继续来切leetcode中 "Bit Manipulation" 下的题目。 "Bitwise AND of Numbers Range" 给出一个范围,[m, n](0 <= m <= n <= 2147483647),返回这些数字的与运算结...
阅读全文
摘要:最近在看位运算的知识,十分感叹于位运算的博大精深,正好leetcode有 "Bit Manipulation" 的专题,正好拿来练练手。 "Subsets" 给出一个由不同的数字组成的数组,枚举它的子数组(子集)。这道题我之前用递归解过,而且效率还不错(beat 83.33%),解法如下不加详述了...
阅读全文
摘要:"Single Number" 这一系列有三道题,第一题也是最简单最经典的。 有一个数组,里面的元素每个都出现了两次,除了一个特殊的,求这个特殊元素。接触过这类题目的coder很快能够脱口而出:直接异或就ok了!的确如此: var singleNumber = function(num...
阅读全文
摘要:本文我们来讲讲二进制的经典应用 求二进制的逆序。本文的重点除了算法本身外,还有 和` `的神奇应用。leetcode中有道具体的题目 "Reverse Bits" ,题目很简单,给你一个 32位无符号整数 ,比如43261596(00000010100101000001111010011100),返...
阅读全文
摘要:说到位运算的经典应用,不得不说N皇后问题。学过程序设计的都知道N皇后问题,没听过也没关系。很简单,最传统的的N皇后问题是这个样子的,给你一个n n大小的board,让你放n个皇后(国际象棋),要满足任意两个皇后不能在一条水平线上,不能在一条垂直线上,也不能在一条45度的斜线上。听起来似乎和数独挺像,...
阅读全文
摘要:前面我们已经了解了六大位操作符( `| ~` `<< `)的用法( "javascript 位运算" ),也整理了一些常用的位运算操作( "常用位运算整理" ),本文我们继续深入位运算,来了解下二进制的经典应用 标志位与掩码。位运算经常被用来创建、处理以及读取标志位序列——一种类似二进制的变量。虽然...
阅读全文
摘要:位运算优先级 ( + ) ( << ) ( ~ & ^ | ) 右边第k位系列 var x = 18; // 10010 // 取右边第k位 // x (k 1) & 1 console.log(x (2 1) & 1); // 1 // 把右边第k位变为0 // x & ~(1 << (k 1...
阅读全文
摘要:位运算博大精深,本文总结下基本的位运算的概念。 1、整数的二进制码 位操作符用于在最基本的层次上,即按内存中表示数值的位来操作数值。ECMAScript中的所有数值都以IEEE 754 64位格式存储,但位操作符并不直接操作64位的值。而是先将64位的值转换成32位的整数,然后执行操作,最后再将结...
阅读全文