使用Devtools将十进制数修改为一些二进制数

问题描述 投票:0回答:1

我读了一个问题的答案(什么是任意精度整数),我读到的答案是

术语固定精度意味着只有一定数量的 内部表示中保留的有效数字。这意味着 你将无法用大小来表示每个整数 大于某个阈值。

任意精度整数,整数可以和你一样大 需要(“任意大”)并且图书馆将保留所有数字 下降到最不重要的单位。 (这显然受限于 计算机中的内存量。)

我用 100 的二进制数替换了 443 的十进制数,返回了 100 作为响应,但我觉得由于十进制数和二进制数不是一回事,因此应该对响应值进行更改。我知道这对你们中的一些人来说很简单,但请教我。我想知道而不是迷路。

java binary decimal
1个回答
0
投票

因此计算机系统无法读取 100 作为二进制仍然用于特定功能 当它应该作为十进制数读取时。

这取决于您从哪里读取值以及它是如何存储的。大多数命令行输入都是字符串形式,必须转换为数字类型(例如

int
double
)。无论输入指定为二进制、八进制还是十六进制,其内部状态都是相同的,并且都是二进制的。 (实际上,您硬盘上的所有内容都以二进制形式存储)。对于双打,它们也将是二进制的,但以特定的格式/编码存储(参见 IEEE 754)。 Java 双打是浮点值。它们是 64 位宽,整数部分和小数部分的大小都可以变化,但连同大小和指数一起,它们不能超过 64 位。所以如果你有一个非常大的整数部分,那么小数部分就没有多少空间了(反之亦然)。整数是 32 位宽的,高位用于符号。它们以 Two 的补码形式 存储。这比这里解释的要多,所以我建议您尝试查找有关数字类型内部表示的更多详细信息。

已更新。

int a = 443;
int b = 100; // not binary it's 100 in decimal
System.out.println(a + " " + b);

版画

443 100

int a = 0b100;  // binary. Leading 0b. Value is 4
int b = 0100;   // octal.  Leading 0.  value is 64
int c = 0x100;  // hex. Leading 0x. value is 256  
System.out.println(a + " " + b + " " + c);

版画

4 64 256

还有

System.out.println(Integer.toString(a,2)); // second arg is output base (or radix)
System.out.println(Integer.toString(b,8));
System.out.println(Integer.toString(c,16));

版画

100
100
100
© www.soinside.com 2019 - 2024. All rights reserved.