求一個位元組中被置1 的位的個數。
#include <stdio.h>
int numOfBitOne(char var)
{
int i, cnt = 0;
for(i=0; i<8; i++)
{
if( (var>>i) & 0x1 )
cnt++;
}
return cnt;
}
int main()
{
printf("%d\n", numOfBitOne(122));
return 0;
}
這個演算法不僅可以求一個位元組中被置1 的位的個數,也可以判斷一個整數是不是2的正整數次冪。若一個數是2的正整數次冪,則這個數在記憶體中的形式必定是獨熱碼,即只有一位被置1。
if( numOfBitOne(var) == 1 ) printf("是2的正整數次冪\n");
相關推薦
求一個位元組中被置1 的位的個數。
#include <stdio.h> int numOfBitOne(char var) { int i, cnt = 0; for(i=0; i<8; i++) { i
.題目:請編寫一個c函式,該函式給出一個位元組中被置為1的位的個數
#include <stdio.h> int fun(int num) {static int count=0; //每一位與1判斷if(num % 2 & 1 == 1)
判斷1個字節中被置1的位的個數
namespace ostream bit one pan calc 個數 count str 判斷1個字節中被置1的位的個數 #include <iostream> using namespace std; size_t calcHasOneBit(
C++/Java取出一個位元組中的某幾位
取出一個char或byte中的某幾位,,以10110111為例。 取出第五位(第n位):10110111 & 00001000(即0x08),得到00000000,再右移三位(>>3),表示式:(data & 0x08) >> 4;
判歐拉回路或求一個圖中尤拉圖的個數
判尤拉圖兩個條件首先聯通,其次度全部為歐度。那麼就很easy了。 題目:hdoj1878 求一個圖中尤拉圖的個數。 首先通過連通性求出各個子圖,然後求子圖中奇數度的個數cnt,cnt/2為尤拉圖的
C語言小結--求一個整數中bit位為1的個數
最近開發需要將一個數據做奇偶校驗,首先就是要計算出這個資料中bit位為1的個數,有以下幾種演算法可以達到要求: 1 方法1 我直接上程式碼,然後分析。 uint16_t get_one_in_data_1(uint16_t data) { uint16_t n = 0
計算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
求一個位元組(8bit)的無符號整形變數,其二進位制中1的個數。
問題:求一個位元組中二進位制1的個數,並顯示執行時間,精確到毫秒。本文提供了三個演算法。程式碼如下 #include "stdafx.h" #include<iostream> #include<time.h> #include<stdli
三種方式求: 輸入一個整數,輸出該數二進制表示中1的個數。其中負數用補碼表示
情況 temp 進制數 二進制表示 pac print 類型 solution 方式 package com.example; public class Solution { /* * 轉化成2進制數計算 */ public int NumberOf1(int n) {
如何取出一個位元組中的任意位(bit)
方法一: #include <iostream> #include <math.h> using namespace std; int main() { unsigned char c = 0x33; int b[8]; for(in
如何計算一個位元組中1的位數
一個巧妙的演算法 static uint8_t bitcount(uint8_t n) { uint8_t count=0 ; while (n) { count++
程式設計實現求一個整數的二進位制中0和1的個數
宣告:假定該數是在32位平臺的機器上執行,在更高或最低平臺上的原理相同。 核心最優演算法: 求1的個數:num&=(num+1) 求0的個數:num |=(num+1) 問題分析: 因
求一個數的二進制數中所含1的個數的代碼實現
article snippet 出現 pri data- count tdi main 代碼實現 #include<stdio.h> int numberOf1_solution1(int n)/*將一個正數以此向右移一位,與1做與運算。直到這個數為零
梁勇(Danniel Liang) java教材例題:java程序購買額按稅率求營業稅 java中數值保留2位小數的方法
can margin package ann pack ati sea static rate package com.swift; import java.util.Scanner; public class PurchaseTaxDecimalsTwo { public
輸入一個整數,輸出該數二進制表示中1的個數。其中負數用補碼表示。
char bin obi int 表示 blog binary 補碼 charat public class Solution { public int NumberOf1(int n) { int count=0; String str=Integer.
輸入一個十進制整數,輸出該數二進制表示中1的個數。其中負數用補碼表示
參考 public 原來 oct new 十六 原理 補碼 lin 《劍指offer》: 首先熟悉一下java自帶的進制之間轉換的api: /*java中進行二進制,八進制,十六進制,十進制間進行相互轉換十進制轉成十六進制:Integer.toHexString(int i
關於最簡單的指標程式碼用指標求一個元素中的內容
define _CRT_SECURE_NO_WARNINGS include<stdio.h> include<stdlib.h> int main(){ int a = 100; intp = &a; printf(“p=%p\n”,p);//指
Oracle 將一個表中幾個欄位更新到另一個表中
UPDATE TEST_TABLE1 T1 SET (T1.AA, T1.BB, T1.CC) =  
資料結構——求一個串中出現的第一個最長重複子串
求一個串中出現的第一個最長重複子串。 輸入串:36123459836121234569 求最長重複子串: 原串:36123459836121234569 最長重複子串:12345 關於這個問題有KMP優化,暫時還沒掌握 下面這個演算法在輸入輸出方面還有待優化 #include <