输入一个10进制数字,请计算该数字对应二进制中0的个数,注意左数第一个1之前的所有0都不需要计算。不需要考虑负数的情况。

原创 2015年07月08日 21:05:47


//输入一个10进制数字,请计算该数字对应二进制中0的个数,注意左数第一个1之前的所有0都不需要计算。不需要考虑负数的情况。

#include<iostream>
using namespace std;
int getResult(int n)
{
 if(n==0)
  return -1;
 int count=0;
 char str[100];
 int i=0;
 while(n)
 {
  str[i++]=n%2+'0';
  n/=2;
 }
 str[i]='\0';
 for(int k=i-1;k>=0;k++)
 {
  if(str[i]=='0')
  {
   str[i]='\0';
   count++;
  }
  else
   break;
 }
 int len=i-count;
 for(int k=0;k<len/2;k++)
 {
  char t=str[k];
  str[k]=str[i-k-1];
  str[i-k-1]=t;
 }
 int sum=0;
 for(int i=0;i<len;i++)
 {
  if(str[i]=='0')
   sum++;
 }
 return sum;
}

  
void main()
{
 int n;
 cin>>n;
 cout<<getResult(n)<<endl;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

大数运算(十)

Author:水如烟 用户使用的大数运算类这里只是简单提供。可以考虑让它自动分拆多线程。BigInt.vbSerializable()> _Public Class BigInt    Private...
  • lzmtw
  • lzmtw
  • 2006年11月02日 17:15
  • 1162

计算机基础,数字在计算机中是怎么表示的

数字是计算机最基础的,所有的基本原理在都是数字。不论你发送什么信息到编译器,最终都会转换为数字。比如,每一个字符在文本块中都是用一个数字表示的。图片也不例外,在计算机中,每个图片也是用一系列数字表示的...
  • woiwhh
  • woiwhh
  • 2016年09月21日 18:12
  • 638

输入一个整数,输出该数二进制表示中1的个数(其中负数用补码表示)--《剑指offer》

题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 有两种解题思路: 1.因为题目给出的是int类型,java中的int类型用32位表示,把这个数依次无符号右移(考虑到负...
  • u011514810
  • u011514810
  • 2016年10月07日 22:48
  • 926

计算n!的最后一位非零数字的算法

 给个想法,没有具体实现,应该可以解决1M位以内的阶乘的最后非零数字问题。 当然如果超出long long的话需要用大整数的运算。 大体思想: 从n的最低位到最高位依此计算出最后一个非零数字在第k位...
  • Alvin_lym
  • Alvin_lym
  • 2006年07月25日 11:59
  • 3140

C++如何求一个十进制数转化为二进制数之后1的个数

十进制转二进制: 用2辗转相除至结果为1 ,也就是说要至除2的余数为0 int Count(int x) { int icount = 0; while (x !=...
  • Jane_yuhui
  • Jane_yuhui
  • 2017年02月28日 17:12
  • 812

就一个简单的大数计算

也只是刚刚写出了加法,用的是1 000 000 000进制,不过发现对于加法还不如用最基本的方法方便。用1 000 000 000进制的方便也就在于处理乘法和除法了。计算机做乘除运算还是比较耗时的。#...
  • u013220338
  • u013220338
  • 2015年08月30日 18:27
  • 5677

计算一个数的二进制表示中0和1个数的方法

常见的一个方法是: x&(x-1)   的作用是对一个数中二进制1的个数进行统计 x|(x+1)    的作用是对一个数中二进制0的个数进行统计   今天做牛客网上的题,又学习到了一个新的算法...
  • xiaoquantouer
  • xiaoquantouer
  • 2017年06月30日 17:29
  • 1510

算法 - 求一个正整数的二进制表示中1的个数(C++)

#include #define NULL 0 using namespace std; int f(int x) { int n = 0; while(x) { ++n; x ...
  • chimomo
  • chimomo
  • 2012年07月04日 21:58
  • 24648

计算子网数详解

概念普及 一、IP地址概念 IPv4 IPv4地址是一个32位的二进制数,它由网络ID和主机ID两部份组成,用来在网络中唯一的标识的一台计算机。网络ID用来标识计算机所处的网段;主机ID用来标...
  • qianggezhishen
  • qianggezhishen
  • 2015年06月01日 17:38
  • 1025

10到10000中的0的个数

题目1:10到10000中0的个数。 题目2:10到10000中所有位乘积为0的数的个数。 题目1的解决依赖于题目2,所以首先要求出10到10000中所有含有数字的数字的个数。 当为2位数时: 第一位...
  • menghuanxiy
  • menghuanxiy
  • 2015年08月23日 15:30
  • 432
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:输入一个10进制数字,请计算该数字对应二进制中0的个数,注意左数第一个1之前的所有0都不需要计算。不需要考虑负数的情况。
举报原因:
原因补充:

(最多只允许输入30个字)