gpt4 book ai didi

java - 我正在尝试做一个自然数到二进制数转换器

转载 作者:行者123 更新时间:2023-12-01 16:45:29 26 4
gpt4 key购买 nike

我是一名 16 岁的年轻人,正在尝试学习 Java 编程。我开始创建这段代码,但我不知道它是否完全正确。你为什么要我把“自然”变成静态?请对代码提出任何您能想到的评论,我试图提高我的编程技能,因此比我了解更多的人的任何评论都会有所帮助。谢谢!

import java.util.Scanner;

public class Prueba {

static int natural;

public Prueba () {
natural = 1;
}

public int Binario(int natural) {
int i = 1, bin = 0;
while(natural>0) {
if (natural % 2 == 0)
natural = natural / 2;
else {
natural = (natural-1)/2;
bin = bin + i;
}
i = i*10;
}
return bin;
}

public static void main(String[] args) {
Prueba a = new Prueba();
Scanner in = new Scanner(System.in);
System.out.println("Natural to binary number converter. Press 0 to stop the program");
while (natural != 0) {
natural = in.nextInt();
System.out.println(a.Binario(natural));
}
}

}

最佳答案

如果你想返回一个二进制字符串,你可以这样做。但有一些事情需要注意(在评论中介绍)。

另外,当你说自然数到二进制时,我不确定你的意思是只是正数还是十进制数。此方法将处理两者。但负十进制数在二进制中不会有负号。它们将显示在所谓的 Two's Complement 中。形式。当您继续学习编程时,您应该熟悉一些东西。

public static String toBinary(int v) {
StringBuilder sb = new StringBuilder();

// since you want to handle negative numbers it's important
// to check for not equal to 0.

while(v != 0) {
// insert the bit at index 0 of stringBuilder.
// The & just masks off the low order bit and ignores
// the others. The result is the same as "v % 2". But
// I prefer bit manipulation when possible
sb.insert(0,v&1);

// this shifts all 32 bits right one bit and inserts a 0
// on the left.
v>>>=1;
}
return sb.toString();
}

查看链接以了解有关 Bit Masking 的更多信息

关于java - 我正在尝试做一个自然数到二进制数转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61786951/

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