当前位置: 首页 > 面试题库 >

Java中的有符号和无符号数据类型

贺浩漫
2023-03-14
问题内容

关于Java支持哪种无符号数据类型,我有些困惑。

我已经读过了,但我不理解它的非常复杂的解释(至少对我而言)。


问题答案:

Java仅支持带符号的类型(除外char),因为它假定对于初学者来说,一种类型比每种大小都具有两种类型更容易理解。在C语言中,它被认为是错误的根源,因此不包括对无符号类型的支持。

因此设计师选择了四种尺寸

  • byte,8位
  • short,16位
  • int,32位
  • long,64位。

并保持一致性,他们都签署就像floatdouble
然而一个符号字节很少非常有用的,给他们让16位无符号char有一个无符号byte可能会更有意义。

当您必须与使用无符号整数类型的系统进行交互时,这种方法不能很好地起作用。这可能是造成混乱的原因,而是使用哪种类型,因为通常情况下它们没有任何区别。Java
8也将具有支持无符号类型的操作。这些被html" target="_blank">添加到包装类,例如IntegerLong



 类似资料:
  • 精明的加法学专家会注意到,它只能加到62位。我在编译器和芯片设计方面的经历告诉我,保留位值黄金。所以我们有两个(设置为零)。 那么这是否意味着: 问题一: ~表示36位移位,包含10位类型Id和其余36位本地Id: #00000000000000000000# ShardID 3429的 二进制=1101 0110 0101 因此(hashedValue>>46)=00000 0 110 1 01

  • 本文向大家介绍C语言中无符号数和有符号数之间的运算,包括了C语言中无符号数和有符号数之间的运算的使用技巧和注意事项,需要的朋友参考一下 C语言中有符号数和无符号数进行运算(包括逻辑运算和算术运算)默认会将有符号数看成无符号数进行运算,其中算术运算默认返回无符号数,逻辑运算当然是返回0或1了。 unsigned int和int进行运算 直接看例子来说明问题吧 输出结果为: 这是因为a和b进行比较的时

  • 我在读一本教科书,上面写着: 必须注意机器代码如何区分有符号和无符号值。与C不同,它不将数据类型与每个程序值相关联。相反,它在这两种情况下大多使用相同的(汇编)指令,因为许多算术运算对于无符号和二补码算术具有相同的位级行为。 我不明白这意味着什么,有人能给我举个例子吗?

  • 问题内容: 我需要使用无符号字节数组。我需要通过网络将某些字符发送到服务器,其中一些字符大于127。 我有下面的代码的简化版本,以尝试理解该概念: 这给出了以下输出: 我需要打印160。由于服务器期望一个160的字节,并且如果它接收到-96,则它不接受该值。我使用int的原因是,当我阅读如何解决该问题时,我经常碰到使用int的建议,但是我不太理解,因为我需要数组为byte类型。 这是我发送数组的代

  • C语言有符号和无符号类型,如char和int。我不确定它是如何在程序集级别实现的,例如,在我看来,有符号和无符号的乘法会带来不同的结果,那么程序集是同时做无符号和有符号的算术,还是只做一个,这在某种程度上是针对不同情况模拟的?

  • 引用oracle网站“byte:字节数据类型是一个8位有符号二补码整数。它的最小值为-128,最大值为127(含)”。 在这里,前两行有效,但最后一行无效 Q1)8位有符号到底是什么意思?二进制格式的128将是1000 0000,-128需要一个额外的负号位,如果所有8位都被占用,它将适合。 Q2)对于int,有一个无符号右移运算符,但这对于字节似乎是非法的,为什么会这样。无法防止字节溢出。在in