整数零采用八位二进制补码表示时,整数0采用8位二进制补码表示时,只有一种表示形式
结论:二进制前缀0b
八进制前缀0
十六进制前缀0X
二进制基数前缀binary0b 0B0b11=2 1=3 21=3三进制八进制0o 0O 00o11=8 1=9十进制十进制前缀11=11十六进制hex0x 0X0x11十进制,直接写值就行了。
另一方面,八进制比较特殊,不同的语言在表达上有细微的差别。
每种语言的数字常量代表了JavaScript/Python之间的差异。八进制数有三个前缀:0 0o 0O。Java/C二进制值只能使用一个前缀0,不能使用0o 0O。否则就会出问题。(错误内容请参考文末。)在Java和C中,八进制数值常量只能以0开头,这可能是因为它们都是编译语言,而JavaScript和Python都是解释语言。
用不同的语言测试JavaScript 0b 1301190 o 119110 x 1117
Python 0b11301190o11911110x1117
Java吴玉进@ Ubuntu18: ~ $ moreradixprixtest。Java public classradixprixtest { PublicStaticVoidman[]argssystem.oon//8,特殊点,前缀0。system . out . println(11;system . out . println(0x 11);}吴玉进@ Ubuntu 18:~ $ javacradixprefixtest . javajavaradixprefixtest 391117吴玉进@ Ubuntu 183360~$
C
武玉金@ Ubuntu 18:~ $ moreradixprefixtest . c # include stdio . hint main({ printf( % d n ,0b 11));打印(%d (n),011);printf(%d(n),11);printf(%d(n),0x 11);0;}吴玉进@ Ubuntu 18:~ $ gccdxprefixtest . c ./RadioXprefixTest 39117 wuyujin @ Ubuntu 183360 ~ $ 8特殊Java,c中的八进制值
c:错误:integerconstant上的后缀“o11”不可用。
Java:错误:illegalstartofexpression