從65535聊到計算機的二進制計算


最近呢,在搞浮點數的問題,突然就想到了65535這個數字,悲劇的是竟然忘記了這個數字的由來..當然我是知道是代表最大值的..但是幾個字節的最大值給忘了,怎么算處理的也給忘了..所以去網上重溫一下二進制的計算因此才有了此帖的由來..

首先是計算機的數據表示的單位:

1位-----------> 1bit

8位-----------> 8bit = 1Byte   俗稱一個字節 ,用十六進制表示就是0xMM

16位----------->16bit = 2Byte = 1Word    俗稱一個字

 

其次是二進制的計算方法       對照着下面的例子就很容易類比到自己的計算上

          

值   位數 最大值   十進制值
1111 4 23 24-1

(為什么是24-1,可以參照高中的等比數列,我也忘記了.)

然后繼續

char  ----> 1個字節----->1111 1111------------>無符號char的話最大值28-1,有符號的char的話最大值27-1

int ------->4個字節----->1111 1111 * 1111 1111 * 1111 1111 * 1111 1111------->unsigned int的話最大值是232-1, int的話最大值是231-1

另外再附贈一個字節對照表

2n 十進制大小(就是我們所說的幾bite) bite-->Byte-->M---->G
20 1  
21
2  
22 4  
23 8  
24 16  
25 32  
26 64  
27 128  
28 256  
29 512  
210 1024 * 1K  
211 2048  *  2K  
212 4096 * 4K  
213 8192 * 8K  
214 16318 * 16K  
215 32768 * 32K  
216 65536 * 64K  
217 131072 * 128K  
218 262144 * 256K  
219 1310720 *512K   
220 2621440 * 1024K * 1M  
221 5242880 * 2048K *2M  
222 10485760 *4096K  *4M  
223 20971520 * 8192K *  8M  
224 41943040 * 16318K * 16M  
225 83886080 *32768K  *32M  
226 167772160 * 65536K *  64M  
227 335544320 *131072K * 128M  
228 671088640 *262144K   *256M  
229 1342177280*1310720K*215M  
230 2684354560*2621440K*1024M*1G  

 對照着上面的表可以看出65535 = 65536 - 1 所以是1111 1111*1111 1111 即2Byte的最大值

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM