無論你使用何種程式語言,正確運用資料型態,可以避免不必要的程式錯誤,在此我將一系列介紹變數型態基本概念,讓各位入門初學者不會錯用。
今天只談整數,整數有兩大類,一為正整數包含零,另一為正負整數,先看看電腦如何處理這些數值,為了方便解釋先以三位元舉例,而後再將觀念拓展到更高位元。
假設有一個三位元處理器,表示它可以一次處理三個位元資料,每個位元資料不是一就是零,那麼正整數可以有下列組合表示:
0 ─ 000
1 ─ 001
2 ─ 010
3 ─ 011
4 ─ 100
5 ─ 101
6 ─ 110
7 ─ 111
如果要表示有正負號的數值,那麼最高位元(MSB)用來代表正負號:
-4 ─ 100
-3 ─ 101
-2 ─ 110
-1 ─ 111
+0 ─ 000
+1 ─ 001
+2 ─ 010
+3 ─ 011
這就是為什麼 BASIC、C、JAVA‧‧‧,所有程式語言變數宣告時,要指明是否帶正負號,下列為常見宣告方式:
unsigned char ─ 8 位元正整數
unsigned short ─ 16位元正整數
unsigned int ─ 16 或 32 位元正整數
unsigned long ─ 32位元正整數
char ─ 8 位元整數 (注意有的編譯器會把 char 當成正整數,那麼宣告就要改成 signed char)
short ─ 16位元整數
int ─ 16 或 32 位元整數
long ─ 32位元整數
int 比較特別,它是 16 / 32 bits?取決於 CPU 以及編譯器(Compiler)設計,通常它是 16 bits,除非高階系統有特別聲明代表 32 bits。
接下來看看這些數值範圍,n 位元
正整數 0 ~ 2n-1
整數 -2n-1 ~ 2n-1-1
因此,
unsigned char ─ 0 ~ 255
unsigned short ─ 0 ~ 65535
unsigned long ─ 0 ~ 4294967295
char ─ -128 ~ 127
short ─ -32768 ~ 32767
long ─ -2147483648 ~ 2147483647
最後提醒程式設計初學者,要留意數值範圍,選擇適當的宣告,否則會發生不可預期的狀況,例如:
變數宣告 unsigned char,當數值 255 再加一,會變為 0。
宣告 char,數值 127 再加一,會變為 -128。
新ubuntu2404,新尹倉1120
-
Ubuntu24.04
每次ubuntu系統出新版本,我的更新都是滯後的。最新的ubuntu2404.iso已經超過6G,估計是因為加入了大量中文字體致使體積大增。我十多年來一直當作系統盤的4個G的U盤再也裝不下了,最終我決定把一個32G的U盤當系統安裝盤。
昨晚研究了multibootUSB好久,最終引導不...
1 天前
上了一課囉, 深入淺出. 這樣沒有計算機概論基礎的人也可以大略了解電腦是如何表示數字的.
回覆刪除您要不要接著談小數表示以及浮點數運算啊?
阿吉
阿吉,
回覆刪除謝謝您留言,原來計畫先討論字元與字串,然後才是浮點數,不過剛收到探奇邱老師的新書,應該會插文推薦。
有任何不易了解的地方,歡迎您留言提問。
最後,謝謝您的 TECHNIC 8418,我的小朋友能夠依照說明書獨立組裝,玩的很開心。
版主 你好
回覆刪除唐突問些問題
煩請幫助
現今敝人在作有關音訊辨別
1.有那些軟體可作音訊頻率分析?
2.音訊頻率分析後若能找出特徵性如頻率
3.如何利用處理技術作應用如顯示?
如能得協助 感恩
祝福順心
蘇子20100313
e-mail
蘇老師,
回覆刪除關於這方面主題的答覆,改貼在世界第一簡單 傅立葉分析,請參考。