java - 为什么 (char)194 == 'Â' 而不是 (char)182 == 'Â'

标签 java bitwise-operators

我在 char 'a' 上尝试了位移运算符 (<<1) 并根据编译器得到了输出 'Â' 但如果我看到 的二进制文件code>'a' 1100001 = 97 移位后为11000010 = 194'Â'的ASCII码为182,ASCII码194属于a框绘图字符。我不明白为什么编译器会为 ASCII 码 194 显示“”?

ASCII 码引用链接:Box drawing character single line horizontal down

最佳答案

ASCII 是一个标准,只有 128 个代码。

Extended ASCII不是单一标准,而是使用一个字节中剩余的 128 个可用代码。正如维基百科所说:

There are many extended ASCII encodings (more than 220 DOS and Windows codepages).

由此我们可以得出结论,Extended ASCII 有 220 种不同的标准。您只看其中之一,而不是与 Java 有任何关系的那个。

事实上,您引用的链接使用的是 code page 850 ,其中字符 194(十六进制 C2)为 为 182(十六进制 B6)。


Java 使用 Unicode ,其中 char 值实际上是 UTF-16编码的 Unicode 字符。截至 Unicode 10.0(2017 年 6 月),目前有 136,755 代码。

前 128 个代码 ( Basic Latin ) 与 ASCII 相同。接下来的 128 个代码 ( Latin-1 Supplement ) 与扩展 ASCII 代码页相同 ISO 8859-1 .

在 Unicode 中,字符 194(十六进制 C2)是 ,也称为 'LATIN CAPITAL LETTER A WITH CIRCUMFLEX' (U+00C2) .

关于java - 为什么 (char)194 == 'Â' 而不是 (char)182 == 'Â',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44771711/

相关文章:

java - java中装饰器和状态模式的结合——关于OO设计的问题

c++ - 将整数转换为位

bit-manipulation - 是否可以仅使用按位运算符来测试数字是否为偶数或 '1' ?

python - 使用按位运算而不是测试偶数/奇数

java - Spring Security 缓存我的身份验证

java - 支持 Bean 未获取 javascript 发送的值

JavaFX - 在 Controller 类之间传递 int 值会产生不正确的结果

java - Android:多个可选按钮

C - 按位操作

c# - 反转位移运算符/2 的幂