跳转至

4.5 位运算

位运算是把数字用二进制表示之后, 对每一位上0或者1的运算;

二进制及其位运算是现代计算机学科的基石, 很多底层的技术都离不开位运算, 因此与位运算相关的题目也经常出现在面试中

理解位运算的第一步是理解二进制; 二进制是指数字的每一位都是0或1, 比如十进制的2转换成二进制就是10, 而十进制的10转换成二进制转换是1010

除了二进制, 我们还可以把数字表示成其他进制, 比如表示时间分秒的六十进制等, 针对不太熟悉的进制, 已经出现了不少很有意思的面试题

Question

在微软的excel产品种, 用A表示第1列, B 表示第二列, ... , Z表示第26列, AA表示27列, AB表示28列, ... 以此类推, 请写一个函数, 输入用字母表示的序列编码, 输出它是第几列

Tip

这是一道很新颖的关于进制的题目, 其本质是把十进制数字用A~Z 表示成二十六进制, 如果想到这一点, 这道题就不难了

Answer

参考代码: excel 编号第几列

其实掌握二进制的位运算并不是很难掌握, 因为位运算总共只有5种运算: 与, 或, 异或, 左移, 右移;

面试题15: 二进制中1的个数

Question

请实现一个函数, 输入一个整数, 输出该数二进制表示中1的个数, 例如, 把9表示成二进制是1001, 有2位是1, 因此, 如果输入9, 则该函数输入2;

Answer

参考代码: 二进制中1的个数

位运算: http://yiouejv.com/%E7%AE%97%E6%B3%95/%E4%BD%8D%E8%BF%90%E7%AE%97/