gpt4 book ai didi

c - 使用C,我如何编写代码来计算有多少个1's are in an inputted integer' s二进制形式?

转载 作者:行者123 更新时间:2023-11-30 17:58:12 25 4
gpt4 key购买 nike

我一直在做一些功课,基本上只是将输入的整数转换为二进制形式。到目前为止,我在将输入的整数转换为二进制数以及减少任何负数方面取得了很大进展。

然而,我遇到的问题是计算二进制代码中 1 的数量并打印二进制表示形式中 1 的数量。我已经尝试了来自互联网和我的书的许多代码示例(不是直接复制和粘贴,我已经尝试使其适合我的需要),但到目前为止没有任何效果。我相信这是因为我没有关注特定的数字。

基本上,我是 C 语言的新手,非常新。我过去两个学期的大部分时间都是在 Java 上完成的,没有任何其他语言的编程经验,只是在寻找帮助。只是重申一下问题:

如何计算输入的二进制表示形式中的个数?

示例:输入44,二进制为1011001 的数量:3

编辑:到目前为止,对于已实现的代码,我现在的新问题是,无论我输入什么整数,输出仍然是 12。

#include <stdio.h>

int main(void)
{
int integer; // number to be entered by user
int i, b, v;
unsigned n = 0;
while(v) {
++n;
v &= v - 1;
}
printf("Please type in a decimal integer\n"); // prompt
fflush(stdout);
scanf("%d", &integer); // read an integer

if(integer < 0)
{
printf("Input value is negative!"); // if integer is less than
fflush(stdout);

return; // zero, print statement
}
else{
printf("Binary Representation:\n", integer);
fflush(stdout);}

for(i = 31; i >= 0; --i) //code to convert inputted integer to binary form
{
b = integer >> i;
if(b&1){
printf("1");
fflush(stdout);
}
else{
printf("0");
fflush(stdout);
}
}
printf("\n");
fflush(stdout);
printf("Number of 1's in Binary Representation:%d\n", n);
fflush(stdout);
printf("\n");
fflush(stdout);
return 0;

}//end function main

最佳答案

编辑:在这里使用它:

ones = 0;
while (integer) { ++ones; integer &= integer - 1; }
printf("Number of 1's in Binary Representation: %d\n",ones);
fflush(stdout);

首先声明:

unsigned int ones;

完整代码:

#include <stdio.h>
#include <stdlib.h>

int main(void){
int integer; // number to be entered by user
int i, b, n;
unsigned int ones;
printf("Please type in a decimal integer\n"); // prompt
fflush(stdout);
scanf("%d", &integer); // read an integer

if(integer < 0)
{
printf("Input value is negative!"); // if integer is less than
fflush(stdout);

return; // zero, print statement
}
else{
printf("Binary Representation:\n", integer);
fflush(stdout);}

for(i = 31; i >= 0; --i) //code to convert inputted integer to binary form
{
b = integer >> i;
if(b&1){
printf("1");
fflush(stdout);
}
else{
printf("0");
fflush(stdout);
}
}
printf("\n");
fflush(stdout);
ones = 0;
while (integer) { ++ones; integer &= integer - 1; }
printf("Number of 1's in Binary Representation: %d\n",ones);
fflush(stdout);
printf("\n");
fflush(stdout);
return 0;
}

关于c - 使用C,我如何编写代码来计算有多少个1's are in an inputted integer' s二进制形式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12379377/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com