如何計算一個數的二進位制表示中的0和1的個數,包括負數
1,如何計算出一個int型別二進位制表示的1的個數,包括正數與負數
public int NumberOf0(int n){
int result=0;
while(n!=0){
++result;
n=n&(n-1);
}
return result;
}
2,如何計算出一個int型別二進位制表示的0的個數,包括正數與負數此時的終止條件應該是每一位都是1也就是1的補碼,即-1
public int NumberOf1(int n){ int result=0; while(n!=-1){ ++result; n=n|(n+1); } return result; }
相關推薦
計算一個無符號整數的二進位制中0和1的個數
x=x|(x+1) 的作用是每次迴圈把x的二進位制中從右往左數的最後一位0變成1,直道變成全1的時候x+1就溢位為全0,迴圈結束。 x=x&(x-1) 的作用是
leetcode_461. Hamming Distance 計算漢明距離,按位異或運算,計算整數的二進位制表示中1的個數 java
題目: The Hamming distance between two integers is the number of positions at which the corresponding bits are different. Given two int
移位--判斷一個數二進位制表示中1的個數
問題: 給定一個數字,求其二進位制表示中1的個數。 思路: 假設給定數為n, 判斷n&1的結果,如果為1,證明這個數的二進位制表示末位為1,則count+1,然後n右移一位遞迴呼叫這個方法
程式設計實現求一個整數的二進位制中0和1的個數
宣告:假定該數是在32位平臺的機器上執行,在更高或最低平臺上的原理相同。 核心最優演算法: 求1的個數:num&=(num+1) 求0的個數:num |=(num+1) 問題分析: 因
[LeetCode] Prime Number of Set Bits in Binary Representation 二進位制表示中的非零位個數為質數
Given two integers L and R, find the count of numbers in the range [L, R] (inclusive) having a prime number of set bits in their binary representation.
動態規劃--統計給定nun,從0~num每個數二進位制表示時0的個數
1、題目:Given a non negative integer number num. For every numbers i in the range 0 ≤ i ≤ num calculate the number of 1's in their binary rep
VB 生成0~1的隨機小數(不包含0和1),再用VB,感慨萬千
今天迫於無奈,接手一個已經離職快兩年的前同事的程式碼(VB6.0),增加一個生成0~1之間隨機數的功能。 VB中的寫法:Rnd() 為了美觀,還要格式化: xxx = Format(Rnd(), "0.000") 無意中看到了MS公司的產品生命週期列表,VB6的如下: 也就
如何計算一個數的二進位制表示中的0和1的個數,包括負數
1,如何計算出一個int型別二進位制表示的1的個數,包括正數與負數 public int NumberOf0(int n){ int result=0; while(n!=0){ ++result; n=n&(n-1); } return
求一個數的二進位制表示中1的個數和0的個數
在我複習的過程中,很多面試題,甚至筆試題中,都用到了多次求一個整數的二進位制表達中1的個數或者0的個數,網上的資料比較亂,我在此做個小記錄,算是自己的一點總結,也希望對大家有幫助! 1.1 求二進位制數中 1 的個數(java版——演算法轉換) public int getNumOf
寫一個函式返回引數二進位制中1的個數+獲取一個數二進位制序列中所有的偶數位和奇數位,分別輸出二進位制序列+輸出一個整數的每一位+兩個int(32位)整數m和n的二進位制表達中,有多少個位(bit)不同
寫一個函式返回引數二進位制中 1 的個數 比如: 15 0000 1111 4 個 1 #include <stdio.h> #include <windows.h> /* 寫一個函式統計一個數二進位制形式下 1 的個數 */ //統計 1 的個數 int C
計算一個自然數的二進位制表示中的“1”的個數
1 /* * 計算一個自然數的二進位制表示中的“1”的個數 * 用遞迴演算法 */ public class recursionTest { public static void main(String[] args) { for(
求一個數對應二進位制中0或1的個數
求一個數對應的二進位制中,0或1的個數 思路: 求1作與運算;求0作或運算 //求1的個數 void print_bin_one(int num){ int count=0; whi
獲取一個數二進位制序列中所有的偶數位和奇數位,分別輸出二進位制序列。
題目要求: 獲取一個數二進位制序列中所有的偶數位和奇數位, 分別輸出二進位制序列。 程式碼實現如下: #include <stdio.h> #include <stdlib.h> #include <windows.h> ty
二進位制位的翻轉和二進位制表示中1的個數
但是更加詳細的說明如下: 這兩個函式極很是巧妙,作了平行計算。 問題1: 將某數的二進位制中各位翻轉 unsigned char reverse8( unsigned char c ) { c = ( c & 0x55 ) << 1 |
計算1個數--計算一個整數二進位制位中1的個數。要求效率儘可能的高。且能正確求正數和負數的二進位制中1的個數。
錯誤方法: 數字右移,這裡會涉及到移位的規則。 移位規則: 左移運算子m<<表示把m左移n位。左移n位的時候,最左邊的n位將被丟棄,同時在右邊補上n個0; 右移比左移稍微複雜一些,如果數字是一個無符號值或正數,右移時最左邊補0; 如果數字是
計算一個整數二進位制位中1的個數。要求效率儘可能的高。且能正確求正數和負數的二進位制中1的個數。
#include<iostream> #include<stdlib.h> using namespace std; int Number1(int n) { int
int abs(int number)函式有感: 求補碼和通過補碼求對應的整數 C++(增加:數字的二進位制表示中1的個數)
#include "limits.h" #include "math.h" int abs(int number) { int const mask = number >> (si
使用Haskell計算一個正整數二進位制表示中最大的連續的1的個數
source: https://www.hackerrank.com/challenges/30-binary-numbers module Main where countMine :: Int -> Int -> Int countMine c n | n
面試題:給定一個數組,陣列中只包含0和1。請找到一個最長的子序列,其中0和1的數量是相同的
這個題目,看起來比較簡單,一些同學可能認為題目的描述符合動態規劃的特徵,然後就開始用動態規劃解,努力找狀態轉移方程。這些同學的感覺,是很正確的。但,找狀態轉移方程,我們要對原來的陣列進行變換一下。 原來是0和1的串,我們將0都換為-1。這樣題目目標就變成,找到一個最長的子串,子串數字和是0。設原陣列為A
762. 二進位制表示中質數個計算置位 二進位制1的個數
給定兩個整數 L 和 R ,找到閉區間 [L, R] 範圍內,計算置位位數為質數的整數個數。 (注意,計算置位代表二進位制表示中1的個數。例如 21 的二進位制表示 10101 有 3 個計算置位。還有,1 不是質數。) 示例 1: 輸入: L = 6, R = 10