剑指offer十一:二进制中1的个数
生活随笔
收集整理的這篇文章主要介紹了
剑指offer十一:二进制中1的个数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述
輸入一個整數,輸出該數二進制表示中1的個數。其中負數用補碼表示。
package com.jianzhioffer;public class NumberOf1Test {public static void main(String[] args){int res = NumberOf1(7);System.out.println("============"+res);res = NumberOf1(-5);System.out.println("============"+res);res = NumberOf1_(7);System.out.println("============"+res);res = NumberOf1_(-5);System.out.println("============"+res);}public static int NumberOf1_(int n){int count=0;while(n!=0){count++;n=(n-1)&n;//由于每次n和n-1相與都會導致,n的最右邊的為1的元素變成0,因此總共要循環的次數就是1的個數次。}return count;}public static int NumberOf1(int n) {int tag=1;int count=0;while(tag!=0){// 0000 0111// 0000 0001//System.out.printf("%d, %d, %d\n",n, tag, n&tag);if((n&tag)!=0)count++;tag=tag<<1; }return count; } }?
總結
以上是生活随笔為你收集整理的剑指offer十一:二进制中1的个数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 剑指offer十:矩形覆盖
- 下一篇: java web三:反射