解法1:右移 & 1

int numberof1(int i)
{int count = 0;while (n) {if (n & 1) {count++;}n = n >> 1;}rerutn count;
}

缺陷是:
当该数为负数,例如0x8000000,右移不是得到0x40000000,而是0xc0000000,因为该数本身是一个负数,所以右移之后仍要保持是负数的本质。

解法2:数不右移,而是用1左移与该数进行相 &

int numberof2(int n)
{int count = 0;unsigned int flag = 1;while (flag){if (n & flag)count ++;flag = flag << 1;}return count;
}

解法3:这是一种比较骚的操作,方法如下:把一个整数减去1,再和原整数做与运算,会把该数最右边的一个1变成0,那么一个整数的二进制中有多少个1,就可以进行多少这样的操作

1100 - 1 = 1011
1100
& 1011
-------------10001000 - 1 = 0111
1000
& 0111
-------------0000int numberof3(int n)
{int count = 0;while(n){++ count;n = n & (n - 1);}return count;
}

计算一个整数,转换成二进制,里面有多少个1相关推荐

  1. 如何把一个整数转换成二进制

    下面介绍一种把键盘输入的整数转换成二进制的方法:程序如下: #include <stdio.h>void int2bin1(int num) {int i;for(i = 1; i < ...

  2. 实现 十进制整数转换成二进制,八进制,十六进制

    整型有4种进制形式: 1.十进制: 都是以0-9这九个数字组成,不能以0开头. 2.二进制: 由0和1两个数字组成. 3.八进制: 由0-7数字组成,为了区分与其他进制的数字区别,开头都是以0开始. ...

  3. c语言 整数转换成二进制 模仿c++的 _itoa() 函数

    _itoa() 函数 头文件 :#include <stdlib.h> char *_itoa(int _value, char* _Dest, int _Radix); 功能:实现整数转 ...

  4. c语言 整数转二进制取位,C语言位运算--将整数转换成二进制串以及反转整数后N位...

    // c primer plus上的内容,位运算 #include char * itobs (int n,char * ps); void show_bstr(const char *); int ...

  5. 把一个整数转换成十六进制数

    把一个整数转换成十六进制数 public class Test {public static void main(String[] args) {String s = decChangeHex(125 ...

  6. C++中几种将整数转换成二进制输出的方法

    看<编程之美>第二节的时候,它是定义的一个整型,然后取位.但是他的那个或运算符号好像写错了,写成了异或符号"^",应该是"|".我就突然对二进制的输 ...

  7. 整型变量转换成二进制里面有多少个1

    这里就不归纳移位运算的两种方法了. public static void main(String[] args) {Scanner sc = new Scanner(System.in);int x= ...

  8. 一个整数转换成字符串(C/C++自己写的算法)

    自己写的一个算法:将一个int型数转换为string char *itoa(int num, char *str){assert(NULL != str);int i=1, j=0;if (num & ...

  9. 把整数转换成2的n次方的和数组

    为什么80%的码农都做不了架构师?>>>    大概这样:125 => [1, 4, 8, 16, 32, 64] 写几种实现: Ruby: 2.3.1 :022 > 1 ...

  10. 十进制转换成二进制——C语言

    利用数组和调用函数编写一个十进制转换成二进制的程序 #include "stdio.h" int main(){int i = 0, n , a[32];printf(" ...

最新文章

  1. Swift2.1 语法指南——类型转换
  2. 双向口和准双向口操作的不同!
  3. java 分布式服务_java分布式微服务云架构- SrpingBoot Admin
  4. SAP Spartacus auth.service.ts里的user调用触发的源代码位置
  5. 微信第三方扫描登录 java源代码_微信开放平台基于网站应用授权登录源码(java)...
  6. 宕机了,Redis数据丢了怎么办?
  7. linux服务器开放防火墙和端口,以及查询状态
  8. linux shell for 循环变量,shell for循环、循环变量值付给其他shell脚本的方法
  9. 软件测试:等价类划分-----EditBox问题增加文本框
  10. 华成英-模拟电子技术P8 放大电路的分析方法 讨论题目
  11. POJ 1053 Set Me G++
  12. 超融合基础架构(HCI)之深信服信服云aCloud方案的虚拟存储(VS,Virtual Storage)技术概览
  13. HDOJ:1863畅通工程
  14. 嵌入式设备开发专题《NB-IoT开发,解读SIM卡、USIM卡、UICC卡、eSIM卡的区别》
  15. python汽车租赁程序_python数据分析实例:共享单车租用影响因素探索
  16. 6 客户端认证方式 之 client_secret_basic client_secret_post
  17. 如何将PDF删除水印?PDF删除水印的方法
  18. java nanotime 转秒_[Java] System.nanoTime()返回结果nanoSeconds和seconds之间的转换
  19. 一个监听home键锁屏键的工具类
  20. discuz mysql类_Discuz论坛教程之数据库操作DB类和C::t类介绍

热门文章

  1. 2022计算机二级全套资料:视频+练习软件+真题资料
  2. Google Play要求app从2019年8月1日起支持64位CPU
  3. 【深度学习-吴恩达】L1-3 浅层神经网络 作业
  4. 软考基础知识—操作系统
  5. 1807521-02-3,PEP azide,PEP叠氮化物其中叠氮基发生点击反应
  6. Pytorch Image Models (timm)
  7. matlab绘制s域零极点分布图,《信号与系统》第五章 连续系统的s域分析.ppt
  8. 理解PeopleSoft HRMS人力资源管理系统
  9. 英特尔最新超级计算机,全球超级计算机500强三分之二使用英特尔的处理器
  10. 计算机9网络连接不上,本地连接连不上,教您电脑本地连接连不上怎么解决