return jjMoveStringLiteralDfa1_0(0x140L, 0x4000000000000L);
我嘗試將0x4000000000000L
hexa轉換爲二進制和文本,但我得到奇怪的字符。這是十六進制值嗎?十六進制值
return jjMoveStringLiteralDfa1_0(0x140L, 0x4000000000000L);
我嘗試將0x4000000000000L
hexa轉換爲二進制和文本,但我得到奇怪的字符。這是十六進制值嗎?十六進制值
0x4000000000000
是一個十六進制數字,L最後告訴你它是一個long
整數(在這種情況下,我猜測一個8字節的整數)。
0x
前綴是幾種語言的標準。它表示一個十六進制數字的開始。後綴L
表示多種語言(例如C)的長值。
如果重組它,它很容易看出它的價值:
4 0000 0000 0000
這相當於:
0004 0000 0000 0000
每一組是兩個字節,所以總長度爲8個字節。
兩個最重要的字節(左邊的)是00
和04
,它是二進制的0000 0000 0000 0100
。換句話說,該值只有第51位的設置(它從右邊算起,即所謂的最低有效位),所有其他位都被清除。看起來像一個掩碼(一個標誌)。爲了完整起見,這裏是二進制表示:
0000 0000 0000 0100 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
每個空格分隔的組是一個半字節,每四個組等於兩個字節。
所以這個數字是一個完全合法的64位值。但是,也許你把價值與代表角色混爲一談?因爲它當然不是,它在Unicode範圍之外(最高可達0x10FFF IIRC)。
順便說一句,轉換爲十進制的數字是1.125.899.906.842.620,所有這些都是一個體面的計算器應該能夠向你展示的(例如,Mac OS X中的Apple計算器在設置爲編程器模式時做得很好,例如)。
你在用什麼語言?你應該爲你的語言添加一個標籤。 – 2010-09-01 10:46:42