[問題] 請問字串大小
大家安安
我在書上讀到一條題目
「同一個串在 C 中會佔用 JAVA 約一半的記憶體空間」
這個答案是 false
可是書上前面又說
JAVA 使用 Unicode 來表示符號@@
Unicode 尺寸不是 ASCII 的兩倍嗎?
請問我誤會了什麼呢??
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.42.232.67
推
10/05 09:47, , 1F
10/05 09:47, 1F
→
10/05 09:56, , 2F
10/05 09:56, 2F
我找到答案了
但不確定我的理解是不是正確
因為指令叢集使用的字組( word )大小是固定的
所以不論是 C 使用 ASCII 編碼,或 JAVA 使用 Unicode
都會佔去固定記憶體空間( 32 或 64 位元)
推
10/05 11:33, , 3F
10/05 11:33, 3F
→
10/05 11:35, , 4F
10/05 11:35, 4F
第二道問題
哪一種可容納1,000,000,000(十進制)的變數型態佔用最多記憶體空間
1. C 中的 int
2. C 中的 String
3. Java 中的 String
這個題目講的容納,應該是把數字當成字串來存的意思
就是 "1000000000" 這樣
1 肯定最小
問題在於 2 跟 3,為什麼 3 最大呢?
3 比 2 多出什麼@@?
→
10/05 12:44, , 5F
10/05 12:44, 5F
→
10/05 13:25, , 6F
10/05 13:25, 6F
推
10/05 13:42, , 7F
10/05 13:42, 7F
→
10/05 14:01, , 8F
10/05 14:01, 8F
→
10/05 14:36, , 9F
10/05 14:36, 9F
→
10/05 14:37, , 10F
10/05 14:37, 10F
→
10/05 14:43, , 11F
10/05 14:43, 11F
感謝!
第一題我一開始認為是編碼的緣故
但在書上看到這一段 整段節錄給大家看一下
「MIPS 軟體會嚐試將堆疊對齊在字組位址上,以便程式可以單單使用 lw 和 sw (兩
者均對齊字組位址)來存取堆疊。這種慣例表示一個配置在堆疊上的字母符號即使
不需要也會佔用掉 4 個位元組。然而 C 的串變數或位元組的數列會將 4 個位元
組組成一個字組,而 Java 的短整數型態 ( short ) 的串變數或數列會將兩個半
字組組成一個字組。 」
我看完之後作了上面寫到的那些理解
請問我誤會了什麼嗎? ( 錯很大的話請不要笑我..Orz )
※ 編輯: p52189 來自: 114.42.232.67 (10/05 15:22)
→
10/05 16:30, , 12F
10/05 16:30, 12F
→
10/05 16:34, , 13F
10/05 16:34, 13F
推
10/05 16:37, , 14F
10/05 16:37, 14F
→
10/05 18:31, , 15F
10/05 18:31, 15F