问题 B: Hz的进制

原创 2018年04月16日 19:02:42

问题 B: Hz的进制

题目描述

Hz遇到一个数学问题,想请教聪明的你:给定一个有符号整数类型的数,Hz想知道该数

二进制表示中1的个数。其中负数用补码表示。

输入

测试样例输入包含一个有符号整数类型的整数n,注意可以是负数

输出

该数二进制表示中1的个数。其中负数用补码表示。

样例输入

1
-5

样例输出

1
31

提示

int占用4字节,32比特(即32位),数据范围为-2147483648~2147483647[-2^31~2^31-1]


负整数的补码求法:将其对应正数二进制表示所有位取反(包括符号位,0变1,1变0)后加1



如 -5 其二进制补码1的个数为31



-5对应正数5(00000000000000000000000000000101)



→所有位取反(11111111111111111111111111111010)



→加1    (11111111111111111111111111111011)




#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,sum,flag;
    while(~scanf("%d",&n))
    {
        sum=0;
        flag=0;
        if(n>=0)
        {
            while(n)
            {
                if(n%2==1)
                {
                    sum++;
                }
                n=n/2;
            }
            printf("%d\n",sum);
        }
        else
        {
            n=-n;
            while(n)
            {
                if(flag==0&&n%2==0)
                {
                    sum++;
                }
                if(flag==1&&n%2==1)
                {
                    sum++;
                }
                if(n%2==1)
                {
                    flag=1;
                }
                n=n/2;
            }
            printf("%d\n",32-sum);
        }
    }
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38620461/article/details/79964775

九度OJ 1118 数制转换(a进制 -> b进制)

原题地址http://ac.jobdu.com/problem.php?pid=1118 输入a进制数n,转为对应b进制的数。 解题思路一道水题。 进制转换的问题以前大一学C语言的时候就做过,这...
  • lecholin
  • lecholin
  • 2017-04-24 22:35:44
  • 251

Hz的进制

Problem  Description:Hz遇到一个数学问题,想请教聪明的你:给定一个有符号整数类型的数,Hz想知道该数二进制表示中1的个数。其中负数用补码表示。Input:测试样例输入包含一个有符...
  • qq_41181772
  • qq_41181772
  • 2018-04-17 11:50:28
  • 3

将a进制数的n转换成b进制数

#include &amp;lt;stdio.h&amp;gt; #include &amp;lt;string.h&amp;gt; int toShi(int n,char a[]){ int l...
  • sinat_36014216
  • sinat_36014216
  • 2018-03-17 20:39:11
  • 27

(数论)进制转换二(将a进制换成b进制)

数制转换这类题解法很固定,常见的就两种,昨天是第一种,今天是第二种。 题目:进制转换 时间限制:1 秒 内存限制:32 兆 题目描述:     求任意两个不同进制非负整数的转换(2进制~16进制),所...
  • kobebryantlin0
  • kobebryantlin0
  • 2017-02-12 18:42:57
  • 411

1942 Problem B 数制转换

1942: 数制转换 时间限制: 1 Sec 内存限制: 32 MB 献花: 165 解决: 63 [献花][花圈][TK题库] 题目描述 求任意两个不同进制非负整数的转换(2进制~16...
  • fantasydreams
  • fantasydreams
  • 2018-01-12 17:04:37
  • 67

PAT (Basic Level) Practise (中文)1022. D进制的A+B (20)

1022. D进制的A+B (20) 时间限制 100 ms 内存限制 32000 kB 代码长度限制 8000 B ...
  • wyxdexyq
  • wyxdexyq
  • 2014-10-21 20:29:39
  • 2140

Python Tip(46~50)题详解

题目46.取石子游戏描述:有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法, 一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子...
  • MTbaby
  • MTbaby
  • 2017-02-04 17:52:39
  • 332

B进制星球

【题目描述】 话说有一天,小Z乘坐宇宙飞船,飞到一个美丽的星球。因为历史的原因,科技在这个美丽的星球上并不很发达,星球上人们普遍采用B(2...
  • qq_31640513
  • qq_31640513
  • 2016-11-26 15:17:34
  • 423

将一个十进制数n转化为B进制数。

将一个十进制数n转化为B进制数。 步骤:重复执行以下步骤(1)和步骤(2),知道n为0. (1)取B进制数的个位:求雨运算n%B,把结果存入数组。 (2)讲B进制数降一阶:整除运算n=n/B。 ...
  • John_Wang7
  • John_Wang7
  • 2017-03-15 22:39:36
  • 928

整数A和B的二进制表示中有多少位是不同的

分析:      两个整数 A、B 异或, 位不相同的变为1,然后判断 1 的个数 int Count( int a, int b) { int num = 0; int v ...
  • health747474
  • health747474
  • 2013-02-23 15:49:31
  • 241
收藏助手
不良信息举报
您举报文章:问题 B: Hz的进制
举报原因:
原因补充:

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