1.位運算----題3 二進制中一的個數

1.原數字不動,1左移,如果將1左移i位與N與後,與1左移後相等,證明i位爲1。

package 位運算;

import java.util.Scanner;

public class numberofone {
    public static void main(String[] args)
    {
        Scanner sc=new Scanner(System.in);//Scanner類可以掃描字符串和基本類型數據進行分析,正則表達式
        int N=sc.nextInt();//scanner類的方法用來讀取INT型數據
        System.out.println(Integer.toBinaryString(N));//輸出N的二進制形式
        int count=0;
        for(int i=0;i<32;i++)
        {
            if((N& (1<<i))==(1<<i))//將1左移i位與N與後,與1左移後相等,證明i位爲1
                 {count++;}
        }
        System.out.println(count);

    }
}

2.數字右移,最後一位與1與運算,與後結果爲1,則i位爲1。

package 位運算;

import java.util.Scanner;

public class numberofone {
    public static void main(String[] args)
    {
        Scanner sc=new Scanner(System.in);//Scanner類可以掃描字符串和基本類型數據進行分析,正則表達式
        int N=sc.nextInt();//scanner類的方法用來讀取INT型數據
        System.out.println(Integer.toBinaryString(N));//輸出N的二進制形式
        int count=0;
        for(int i=0;i<32;i++)
        {
            if(((N>>i)&1)==1)//將N右移i位後與1做與運算,若結果爲1,則證明第i位爲1 
                 {count++;}
        }
        System.out.println(count);

    }
}

3.將原數字減1後與原數字做與運算,直至與運算結果爲0。

示意圖:

代碼:

 Scanner sc=new Scanner(System.in);//Scanner類可以掃描字符串和基本類型數據進行分析,正則表達式
 int N=sc.nextInt();//scanner類的方法用來讀取INT型數據
 System.out.println(Integer.toBinaryString(N));//輸出N的二進制形式
 int count=0;
while(N!=0)
 {
     N=(N-1)&N;//關鍵代碼
     count++;
 }
 System.out.println(count);

 

發佈了12 篇原創文章 · 獲贊 0 · 訪問量 491
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章