一个字节中存在着多少个二进位1

一个字节中二进位1的个数

两个相似的方法,一个右移所查看的字节;一个查看左移1.

#include <stdio.h>

int getOneBits(unsigned char num)
{
    int count = 0;
    for(int i = 0; i < 8; i++)
    {
        if((num & (1 << i)) != 0)
            count++;
    }

    return count;
}

int main(void)
{
    printf("%d\n", getOneBits((unsigned char)10));
    return 0;
}
#include <stdio.h>

int getOneBits(unsigned char num)
{
    int count = 0;
    for(int i = 0; i < 8; i++)
    {
        if(((num>>i) & 1) != 0)
            count++;
    }

    return count;
}

int main(void)
{
    printf("%d\n", getOneBits((unsigned char)10));
    return 0;
}

在网上看到有查表法,效率高,貌似比较麻烦:

//将0x00~0xFF对应存在二进位0的个数保存在unsigned int C[256]中
const int C[256]={8,7,7,6,7,6,6,5,7,……,1,0};
//然后
int ZeroBitsCount(BYTE b) {return C[(unsigned int)b];}
时间: 2024-10-18 18:47:53

一个字节中存在着多少个二进位1的相关文章

反转一个值中的最后n位

这是在<使用位运算显示二进制数>的基础上进一步扩展,实现反转一个值中最后n位,参数为n和要反转的值. ~可以一个字节中所有的位,而不是选定的少数位.为达到指定要求,需创建一个掩码,该掩码最后n位设为1,其余的位设为0.然后,对该掩码和一个值使用^运算就可以转置这个值得最后n位,同时保留该值的其他位不变. 1 //使用位操作符来显示二进制并翻转该值的最后n位 2 #include<stdio.h> 3 char *itobs( int, char*); //integer to bi

如何判断一个字节是否是一个汉字中的一部分

UNICODE是万能编码,包含了所有符号的编码,它规定了所有符号在计算机底层的二进制的表示顺序. 在UTF-8编码中一个中文占三个字节 比如 汉字 "张" 对应的三字节编码是[229 188 160] 但是如何判断,229 188 160 是组合的呢,这里涉及到一套规则 UTF规定: 如果一个符号只占一个字节,那么这个8位字节的第一位就为0. 如果为两个字节,那么规定第一个字节的前两位都为1,然后第一个字节的第三位为0,第二个字节的前两位为10 然后如果是三个字节的话,那么第一个字节的

从一个字符串中提取一个子字符串

编写一个函数,它从一个字符串中提取一个子字符串.函数原型如下: int substr(char dst[], char src[],int start, int len) {} 目标是:从 src 数组起始位置向后偏移 start个字符的位置开始,最多复制 len 个非NUL 字符到 dst数组.在复制完毕之后, dst 数组必须以 NUL字节结尾.函数的返回值是存储于 dst 数组中的字符串的长度. #include<stdio.h> #include<stdlib.h> #de

Java学习(4):统计一个文件中的英文,中文,数字,其他字符以及字符总数

要求:统计一个文件中的英文,中文,数字,其他字符以及字符总数(此随笔以txt文件为例) import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; /** * 将一个文件中英文,中文,数字,其

一个字节是多少?

字节(Byte):字节是通过网络传输信息(或在硬盘或内存中存储信息)的单位. 字节是计算机信息技术用于计量存储容量和传输容量的一种计量单位,1个字节等于8位二进制. 在ASCII码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间. 符号:英文标点占一个字节,中文标点占两个字节.举例:英文句号"."占1个字节的大小,中文句号"."占2个字节的大小 一个二进制数字序列,在计算机中作为一个数字单元,一般为8位二进制数,如一个ASCII码就是一个

Java反射机制demo(五)—获得并调用一个类中的方法

这个demo在使用反射机制操作属性之前,主要原因是因为在.class文件字节码中,方法排在属性的前面. 1,获得一个类中的方法 先看一下方法和运行结果.获取所有的方法使用Class类中getMethos()方法. 待获取的类: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 package

java 数据装箱及练习-对一个字符串中的数字进行排序

/* 八种数据类型:byte,short,int,long,float,double,char,boolean, 基本数据类型对象包装类: 为了方便操作基本数据类型值,将其封装成对象,在对象中定义了属性和行为丰富该数据的操作. 用于描述对该对象的类就称为基本数据类型对象封装类. byte Byte short Short int Integer long Long float Float double Double char Character boolean Boolean 基本数据类型 --

exp导出一个表中符合查询条件的数据

原文地址:exp导出一个表中符合查询条件的数据 作者:charsi 导出一个表中的部分数据,使用QUERY参数,如下导出select * from test where object_id>50000这个条件中的数据exp charsi/[email protected] tables=(TEST) query="'where object_id>50000'" file=aaa.dmp log=aaa.log 其他参数含义:GRANTS:指定是否导出对象的授权信息,默认参

C++_第七章函数的基本知识_求阶乘的子函数_ 函数参数类型为数组_ 求数组内所有元素和、部分元素和的方法_实现了先从键盘输入到一个数组中,再用for循环取读出数组中的元素 for循环也可以用break来结束循环的

/* 第七章函数的基本知识 */ /*01)c++对于返回值有一定的限制:可以是常量.变量.指针.结构对象或表达式,但不可以是数组02)c++返回数组的方法:将数组作为结构会对象组成部分来返回03)函数遇到return则结束该函数04)如果一个函数的两房额参数类型相同,则必须分别制定每个参数的类型,而不能像声明常规变量那样,将声明组合在一起05)*/ //本代码注意double类型的写法以及double和int类型数据的转换 1 #include <iostream> 2 3 void che