Advertisement

如何计算一个整数二进制表示中包含多少个1?

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:PDF


简介:
本文将介绍一种高效的方法来计算给定整数在二进制形式下包含多少个1。通过简单的数学和位操作技巧,读者可以轻松掌握这一实用技能。 代码如下:判断一个整数的二进制位中有多少个1 ```cpp void totalOne(int x) { int count = 0; while(x) { x = x & (x - 1); count++; } printf(count = %d\n, count); } ``` 循环中的操作 `x = x & (x – 1);` 和 `count++;` 直到变量 `x` 变为0为止。此方法的时间复杂度是O(m),其中m表示整数的二进制位中1的数量。 考虑一个具体的例子,设整数 `x` 的二进制形式如下: ``` x = an-1an-2…a0 ``` 从低位到高位依次检查每一位,不失一般性地假设第i位是第一个为1的二进制位(即 ai=1)。此时有: ``` x =an-1, ```

全部评论 (0)

还没有任何评论哟~
客服
客服
  • 1
    优质
    本文将介绍一种高效的方法来计算给定整数在二进制形式下包含多少个1。通过简单的数学和位操作技巧,读者可以轻松掌握这一实用技能。 代码如下:判断一个整数的二进制位中有多少个1 ```cpp void totalOne(int x) { int count = 0; while(x) { x = x & (x - 1); count++; } printf(count = %d\n, count); } ``` 循环中的操作 `x = x & (x – 1);` 和 `count++;` 直到变量 `x` 变为0为止。此方法的时间复杂度是O(m),其中m表示整数的二进制位中1的数量。 考虑一个具体的例子,设整数 `x` 的二进制形式如下: ``` x = an-1an-2…a0 ``` 从低位到高位依次检查每一位,不失一般性地假设第i位是第一个为1的二进制位(即 ai=1)。此时有: ``` x =an-1, ```
  • MySQL外键,其字段对应同行查询?
    优质
    本篇介绍在MySQL数据库设计中,当一张表拥有指向同一张表的多个外键时,如何编写有效的SQL查询语句来获取所需数据。通过具体示例帮助读者理解复杂的表间关联查询技巧。 需求是这样的:一个资源表包含分类r_class_id(对应分类表的外键)、创建者r_up_creator(用户表id对应的外键)以及审核者r_ver_id (同样指向用户表id)。如何将这些信息一并查询出来呢?首先可以使用左连接进行操作,例如: ```sql SELECT resources.*, resource_classify.rc_name, users.u_name AS r_up_creator, users_1.u_name AS r_verifier FROM resources LEFT JOIN resource_classify ON resources.r_class_id = resource_classify.id LEFT JOIN users AS users_1 ON resources.r_ver_id = users_1.user_id LEFT JOIN users ON resources.r_up_creator = users.user_id; ``` 这样可以确保查询出资源表中的所有信息,同时关联到分类名称和创建者及审核者的用户名。
  • 输入并显.java
    优质
    本Java程序接收用户输入的一个十进制整数,并输出该数字对应的二进制形式,帮助理解不同数值系统间的转换。 使用Java编写一个程序来提示用户输入一个十进制整数,并显示该数字对应的二进制值。在实现过程中,请不要使用`Integer.toBinaryString(int)`方法。
  • MySQL 查询字段
    优质
    本篇文章将介绍如何查询MySQL数据库中某张表的具体字段数量,涵盖SQL语句及示例操作。 如何查询MySQL表中有多少个字段?
  • 创建目录的Makefile
    优质
    本教程详解了如何编写一个复杂的Makefile,其中包含了管理多个目录文件的方法和技巧。适合希望提升自动化构建过程效率的开发者阅读。 最近我的工作需要使用到Makefile的知识,我整理了最新的学习心得,并打算做一个记录分享出来,以便以后需要用到时可以作为参考。附件包含了在gcc环境下使用的makefile样例c代码,下载后可以直接运行。
  • 给定自然n,结果并统0。
    优质
    本程序接收用户输入的一个自然数n,并计算该数值在阶乘表达式中的零的数量,即n!中包含多少个尾随零。 输入一个自然数n,求n的阶乘,并统计结果中有多少个0。最多可计算10000的阶乘。
  • 在C语言返回
    优质
    本文将介绍在C语言编程环境中,通过指针和结构体两种方法实现让一个函数返回多个值的具体技巧与应用实例。 在C语言中,一个函数如何返回多个值?使用return语句不能实现这一需求。 实际上,在C语言里,如果需要让一个函数返回多个值,可以考虑以下几种方法: 1. 使用指针:通过传递指向变量的指针来修改这些变量。这样可以在调用函数时直接获取到结果。 2. 结构体:定义包含所需数据类型的结构体,并将该类型作为函数的返回类型。 这两种方式都可以实现一个C语言函数返回多个值的目的,而不仅仅是依赖于return语句。
  • iframe使div始终位于最上层显
    优质
    本文探讨了在含有多个iframe的网页结构中,如何保证特定div元素始终保持在视觉层级的顶层,确保其内容可见且交互无障碍。 在包含多个iframe的页面中,其中一个frame内的隐藏div可以被设置为最上层显示,确保它不会被其他元素遮挡。
  • C语言模块合为程序
    优质
    本教程讲解了将独立开发的多个C语言模块集成到单一可执行文件中的方法和步骤,涵盖编译链接过程及解决常见问题。 如何将多个C语言模块组合成一个程序 C++箴言:必须返回对象时别返回引用 C++文本模式模仿磁盘扫描外观 C++通过覆盖__atexit进行缓冲区溢出攻击 C++通过并行机制处理鼠标和键盘
  • 用C语言的n次方.txt
    优质
    本文将介绍在C语言编程中实现计算一个数值的n次幂的方法,包括使用循环和库函数pow两种方式。适合初学者学习掌握数学运算技巧。 在C语言中表示一个数的n次方通常可以使用库函数`pow()`或者手动实现幂运算。 方法一:利用标准数学库中的 `pow()` 函数。 ```c #include double result = pow(base, n); ``` 方法二:通过循环来计算,适用于整数值的情况: ```c int power(int base, int exponent) { int result = 1; for (int i = 0; i < exponent; ++i) result *= base; return result; } ``` 以上两种方式可以根据实际需要选择使用。