本文介绍了James Gosling 解释了为什么 Java 的字节是有符号的的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我最初很惊讶 Java 决定指定 byte 是有符号的,范围是 -128..127(含).我的印象是大多数 8 位数字表示是无符号的,范围是 0..255(例如 点十进制表示法中的 IPv4).

I was initially surprised that Java decides to specify that byte is signed, with a range from -128..127 (inclusive). I'm under the impression that most 8-bit number representations are unsigned, with a range of 0..255 instead (e.g. IPv4 in dot-decimal notation).

James Gosling 有没有被要求解释为什么他决定 byte 是有符号的?过去,权威的编程语言设计者和/或评论家之间是否就这个问题进行过显着的讨论/辩论?

So has James Gosling ever been asked to explain why he decided that byte is signed? Has there been notable discussions/debates about this issue in the past between authoritative programming language designers and/or critics?

推荐答案

看起来简单是主要原因.来自本次采访:

It appears that simplicity was the main reason. From this interview:

Gosling:对于我作为一名语言设计师来说,我现在并不真正将自己视为自己,简单"的真正含义是我能期望 J. Random Developer 将规范牢记在心.这个定义说,例如,Java 不是——事实上,很多这些语言最终都有很多极端情况,没有人真正理解的东西.向任何 C 开发人员询问有关无符号的问题,很快您就会发现几乎没有 C 开发人员真正了解无符号的情况,什么是无符号算术.诸如此类的事情使 C 变得复杂.我认为 Java 的语言部分非常简单.您必须查找的库.

我最初的假设是因为 Java 根本没有无符号数字类型.为什么 byte 应该是一个例外?char 是一种特殊情况,因为它必须表示 UTF-16 代码单元(感谢 Jon Skeet 的引用)

My initial assumption was that it's because Java doesn't have unsigned numeric types at all. Why should byte be an exception? char is a special case because it has to represent UTF-16 code units (thanks to Jon Skeet for the quote)

这篇关于James Gosling 解释了为什么 Java 的字节是有符号的的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-05 10:25