![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
elements of programming interviews
Yip Hon
这个作者很懒,什么都没留下…
展开
-
二进制中1的个数
elements of programming interviews in java第25页举了一个关于计算int类型在二进制下1的个数的问题,这里根据书上的方法写了代码,没有做过多少测试用例,只能说理论上应该是对的问题描述给定一个int类型数字x,计算其在二进制下1的个数方案1使用1作为掩码进行 and 运算,每次运算后将x进行右移操作public int mehtod_1(int x...原创 2019-09-12 13:33:36 · 132 阅读 · 0 评论 -
bit swap
问题交换二进制中i和j两个位置解决方案首先检查i和j两位是否一致,若一致则无需进行修改。若不一致,创建一个i和j设为1的掩码,和原二进制进行异或即可。public static long swapBits(long x, int i, int j) { if(CCx»> i)&1)!=((x»> j)&1)){ long bitMask = (IL « ...原创 2019-09-17 15:44:03 · 445 阅读 · 0 评论 -
二进制数反转
问题将一个二进制数反转如:Input: 00000010100101000001111010011100Output: 00111001011110000010100101000000解决方案可以预设一些反转结果,如四位数的反转结果可以写作如下数组char nums[16] = {0,8,4,12,2,10,6,14,1,9,5,13,3,11,7,15};设L表示预设的反转结果的...原创 2019-09-17 16:07:48 · 2016 阅读 · 0 评论 -
通过按位运算计算二进制数字的乘法和除法
乘法比如有两个数字13=(1101),9=(1001),此时计算两者的乘法可以从13的最低位往最高位遍历,如第一个为1,则有1001,第二位为0跳过,第三位为1,则再加上1001左移2位即100100,此时结果为101101,最后一位也是1则加上1001000,最终结果为1110101=117代码demo如下:public static long multiply(long x, long...原创 2019-09-18 13:56:13 · 905 阅读 · 0 评论