ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

20211021-integer取最高最低位

2022-05-22 21:01:57  阅读:133  来源: 互联网

标签:反码 16 int 20211021 最低 return static integer HD


public static int highestOneBit(int i) {// 对于其1最高位n,便于理解咱们从左到右为顺序递增
   // HD, Figure 3-1
   i |= (i >>  1);// n 到 n+1 都是 1(n开始2位)
   i |= (i >>  2);// n 到 n+3(n开始4位)
   i |= (i >>  4);// n n+7(n开始8位)
   i |= (i >>  8);// n n+15(n开始16位)
   i |= (i >> 16);// n n+31(n开始32位)
   return i - (i >>> 1);// 只保留最高位
}

 

public static int lowestOneBit(int i) {
   // HD, Section 2-1
   return i & -i;// i&(i的反码)=0,只需证明 i的反码+1 后一直加到i的最低位即可:应该不难理解,一直+1,如果之前是0那么就往前+1,遇到0则表明之前就是1.
}
i & (i-1)// 为减去最低位1后的i
 

标签:反码,16,int,20211021,最低,return,static,integer,HD
来源: https://www.cnblogs.com/zpq5935/p/16298968.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有