计算一个整数,转换成二进制,里面有多少个1
解法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相关推荐
- 如何把一个整数转换成二进制
下面介绍一种把键盘输入的整数转换成二进制的方法:程序如下: #include <stdio.h>void int2bin1(int num) {int i;for(i = 1; i < ...
- 实现 十进制整数转换成二进制,八进制,十六进制
整型有4种进制形式: 1.十进制: 都是以0-9这九个数字组成,不能以0开头. 2.二进制: 由0和1两个数字组成. 3.八进制: 由0-7数字组成,为了区分与其他进制的数字区别,开头都是以0开始. ...
- c语言 整数转换成二进制 模仿c++的 _itoa() 函数
_itoa() 函数 头文件 :#include <stdlib.h> char *_itoa(int _value, char* _Dest, int _Radix); 功能:实现整数转 ...
- c语言 整数转二进制取位,C语言位运算--将整数转换成二进制串以及反转整数后N位...
// c primer plus上的内容,位运算 #include char * itobs (int n,char * ps); void show_bstr(const char *); int ...
- 把一个整数转换成十六进制数
把一个整数转换成十六进制数 public class Test {public static void main(String[] args) {String s = decChangeHex(125 ...
- C++中几种将整数转换成二进制输出的方法
看<编程之美>第二节的时候,它是定义的一个整型,然后取位.但是他的那个或运算符号好像写错了,写成了异或符号"^",应该是"|".我就突然对二进制的输 ...
- 整型变量转换成二进制里面有多少个1
这里就不归纳移位运算的两种方法了. public static void main(String[] args) {Scanner sc = new Scanner(System.in);int x= ...
- 一个整数转换成字符串(C/C++自己写的算法)
自己写的一个算法:将一个int型数转换为string char *itoa(int num, char *str){assert(NULL != str);int i=1, j=0;if (num & ...
- 把整数转换成2的n次方的和数组
为什么80%的码农都做不了架构师?>>> 大概这样:125 => [1, 4, 8, 16, 32, 64] 写几种实现: Ruby: 2.3.1 :022 > 1 ...
- 十进制转换成二进制——C语言
利用数组和调用函数编写一个十进制转换成二进制的程序 #include "stdio.h" int main(){int i = 0, n , a[32];printf(" ...
最新文章
- Swift2.1 语法指南——类型转换
- 双向口和准双向口操作的不同!
- java 分布式服务_java分布式微服务云架构- SrpingBoot Admin
- SAP Spartacus auth.service.ts里的user调用触发的源代码位置
- 微信第三方扫描登录 java源代码_微信开放平台基于网站应用授权登录源码(java)...
- 宕机了,Redis数据丢了怎么办?
- linux服务器开放防火墙和端口,以及查询状态
- linux shell for 循环变量,shell for循环、循环变量值付给其他shell脚本的方法
- 软件测试:等价类划分-----EditBox问题增加文本框
- 华成英-模拟电子技术P8 放大电路的分析方法 讨论题目
- POJ 1053 Set Me G++
- 超融合基础架构(HCI)之深信服信服云aCloud方案的虚拟存储(VS,Virtual Storage)技术概览
- HDOJ:1863畅通工程
- 嵌入式设备开发专题《NB-IoT开发,解读SIM卡、USIM卡、UICC卡、eSIM卡的区别》
- python汽车租赁程序_python数据分析实例:共享单车租用影响因素探索
- 6 客户端认证方式 之 client_secret_basic client_secret_post
- 如何将PDF删除水印?PDF删除水印的方法
- java nanotime 转秒_[Java] System.nanoTime()返回结果nanoSeconds和seconds之间的转换
- 一个监听home键锁屏键的工具类
- discuz mysql类_Discuz论坛教程之数据库操作DB类和C::t类介绍
热门文章
- 2022计算机二级全套资料:视频+练习软件+真题资料
- Google Play要求app从2019年8月1日起支持64位CPU
- 【深度学习-吴恩达】L1-3 浅层神经网络 作业
- 软考基础知识—操作系统
- 1807521-02-3,PEP azide,PEP叠氮化物其中叠氮基发生点击反应
- Pytorch Image Models (timm)
- matlab绘制s域零极点分布图,《信号与系统》第五章 连续系统的s域分析.ppt
- 理解PeopleSoft HRMS人力资源管理系统
- 英特尔最新超级计算机,全球超级计算机500强三分之二使用英特尔的处理器
- 计算机9网络连接不上,本地连接连不上,教您电脑本地连接连不上怎么解决