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

时间:2017-06-27 03:11:41

标签: java bitwise-operators

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

ASCII代码参考的链接:Box drawing character single line horizontal down

2 个答案:

答案 0 :(得分:3)

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

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

  

有许多扩展的ASCII编码(超过 220 DOS和Windows codepages )。

由此我们可以得出结论,扩展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)

答案 1 :(得分:2)

您提供的链接是错误的Java扩展ASCII,请参见此处:

http://www.idevelopment.info/data/Programming/programming_resources/PROGRAMMING_ascii_table.shtml

在此表中,194 = Â符合预期。