- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在一个简单的计算器中使用 toBinaryString 将整数转换为其二进制等价物,每当进行除加法之外的任何数学运算时,我都会得到前导 1 和不应该出现的 0。
例如,我从 10 中减去 5,这应该得到二进制的 5 或 101,但我得到的是
Output: 11111111111111111111111111110001
这是我不知道的 toBinaryString 问题,还是我做错了什么?
主要代码:
if (input == 1)
{
System.out.println("- ADDITION -");
toDo = operator.getInputs(input); // Gets how many values to input.
ArrayList<Integer> list = new ArrayList<>(toDo);
operator.addToList(list, toDo); // Adds values input to list.
operator.addBinary(list); // Add values in 'list' together.
}
if (input == 2)
{
System.out.println("- Subtraction -");
toDo = operator.getInputs(input); // Gets how many values to input.
ArrayList<Integer> list = new ArrayList<>(toDo);
operator.addToList(list, toDo); // Adds values input to list.
operator.subBinary(list); // Subtract values in 'list' for eachother.
}
if (input == 3)
{
System.out.println("- Multiplication -");
toDo = operator.getInputs(input); // Gets how many values to input.
ArrayList<Integer> list = new ArrayList<>(toDo);
operator.addToList(list, toDo); // Adds values input to list.
operator.multBinary(list); // Multiplies values in 'list' together.
}
方法:
class binaryOperations
{
private Scanner scan = new Scanner(System.in);
int getInputs(int b)
{
int input;
System.out.println("How many integers do you wish to input: ");
return input = scan.nextInt();
}
int printBinary(int b) // Number to convert
{
String foo = Integer.toBinaryString(b); // Convert input to binary
return (Integer.parseInt(foo));
}
ArrayList<Integer> addToList(ArrayList<Integer> list, int toDo)
{
for (int i = 0; i < toDo; i++)
{
if (i == 0)
System.out.println("Please enter the first integer:");
else
System.out.println("Please enter the next integer: ");
int input = scan.nextInt();
list.add(input);
}
return list;
}
// Addition //
void addBinary(ArrayList<Integer> list)
{
int temp = 0, sum = 0;
for (int i = 0; i <= list.size() - 1; i++)
{
temp = list.get(i);
sum += temp;
}
String foo = Integer.toBinaryString(sum); // convert the sum to a string
System.out.println("The sum of the numbers in binary is " + foo);
}
// Subtraction //
void subBinary(ArrayList<Integer> list)
{
int temp = 0, difference = 0;
for (int i = 0; i <= list.size() - 1; i++)
{
temp = list.get(i);
difference -= temp;
}
String foo = Integer.toBinaryString(difference); // convert the difference to a string
System.out.println("The difference of the numbers in binary is " + foo);
}
// Multiplication //
void multBinary(ArrayList<Integer> list)
{
int temp = 0, products = 0;
for (int i = 0; i <= list.size() - 1; i++)
{
temp = list.get(i);
products *= temp;
}
String foo = Integer.toBinaryString(products);
System.out.println("The products of the numbers in binary is " + foo);
}
}
最佳答案
您的 subBinary
无法正常工作。它的作用是:
0 - firstElementofList - secondElementofList ...
因此,在您的情况下,如果您的列表包含 {10,5},您将得到 -15,它由以下二进制值精确表示:
11111111 11111111 11111111 11110001
您需要做的就是更改它,可能会从第一个中减去其余部分:
void subBinary(ArrayList<Integer> list)
{
int temp = 0, difference = list.get(0);
for (int i = 1; i <= list.size() - 1; i++)
{
temp = list.get(i);
difference -= temp;
}
String foo = Integer.toBinaryString(difference); // convert the difference to a string
System.out.println("The difference of the numbers in binary is " + foo);
}
现在,如果您提供 {5,10}
,您将得到 -5
关于java - toBinaryString 的前导为 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36726825/
编译以下内容时出现类型不兼容错误: public class E10_Bitwise { public static void main(String[] args) { Bi
我在一个简单的计算器中使用 toBinaryString 将整数转换为其二进制等价物,每当进行除加法之外的任何数学运算时,我都会得到前导 1 和不应该出现的 0。 例如,我从 10 中减去 5,这应该
我正在使用 Integer.toBinaryString 将 float 转换为 intbits (Float.floatToIntBits()) 转换为二进制。然而,结果是无符号的。有什么方法可以获
我不知道为什么在 yy.charAt(i) 赋值时出现错误。它说...预期变量...不是值。 static int subtract(int x,int y) { String yy=Inte
这个问题已经有答案了: How to get 0-padded binary representation of an integer in java? (17 个回答) 已关闭 6 年前。 我目前正
简单场景:你有一个字节数组 byte[] message = { 1, 2, 3 }; 要以二进制形式打印出来,您可以使用代码: for (byte b : message) { System
一个简单的设计问题。 示例代码: Integer int1 = new Integer(20); System.out.println(Integer.toBinaryStri
我需要修改这两行代码,以便它们始终返回四位二进制数。 String binary1 = Integer.toBinaryString(t1); String binary2 = Int
我正在尝试将整数输入转换为二进制字符串并将它们连接在一起形成一个长字符串。示例: input: 4 5 output: 0100 0101 检查 API 并看到 toBinaryString 返回一个
我了解到短类型变量是一个 16 位有符号整数,但是 short n = -1; System.out.println(Integer.toBinaryString(n)); 输出: 1
我正在使用 double,需要找到 827.0 的二进制版本。 环顾四周的方法是this . 我也是这样的: double myDouble = 827.0; Long.toBinaryString(
我正在编写一种将 int 值转换为二进制字符串并存储它们的方法。我正在使用 Integer.toBinaryString 方法来这样做,它工作正常,但问题是我需要方法在字符串中返回 4 位而不是更少(
我只是在搞乱Integer.toBinaryString(int)方法。 当我传递正数(例如 7)时,它会输出 111,但当我传递负数 7 时,它会输出 11111111111111111111111
inttime[] 是一个数组,其中已经包含一位整数值。第一个 for 循环寻求将每个整数转换为二进制字符串并将其存储到字符串数组 bintime[]。这部分工作正常,但是当我尝试运行下一个 for
这两个函数都将 Long 转换为二进制 String,但是其中一个比另一个更优化吗?我查看了Long类的源代码,这两个静态方法有不同的实现。 最佳答案 答案很容易得到,只需做一下测试: class T
为什么这两种方法在处理二进制数时使用两种不同的方法? Integer.parseInt(String s, 2)方法中表示负二进制数的字符串应该以-字符开头,但是Integer.toBinaryStr
我是一名优秀的程序员,十分优秀!