从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的最大值

原文地址:https://www.cnblogs.com/silentNight/p/5278084.html