码迷,mamicode.com
首页 > 其他好文 > 详细

谈谈二进制

时间:2015-11-23 00:55:29      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:

  今天来说说二进制的始终,首先,目前流行计算机架构都是冯诺依曼体系,冯诺依曼体系有个重要的约束吧,应该可以这么说,就是计算机采用二进制表示数据,之所以要用二进制呢,1,简单,硬件容易实现,2,具有容错性,认为高于某个值的电压认为就是表示1,比如约定,高于3v的电压表示1,那么3,3.5,4。。。都可以表示‘1‘。

然后为了帮助你们理解二进制,我先聊聊进制。我们的生活里大多数场合采用10进制,也就是伸出你们双手,正常人是有十个手指,我们程序员都是从0开始计数的,给你的手指编号,0—9,对吧,10个手指,那么当我们遇到进位的时候呢,咋办?我们会向前进位,如表示11,我们知道,在十进制里是1 * 10^1 + 1 * 1//(也就是10^0次),假设我们只用手指表示,不要考虑脚趾。。。咳咳,严肃!也就是满10了,我们先十位进1。二进制同理,伸出两只手指:可以编号的有0, 1。同理,8进制可以编号的是0—7,16进制的时候,我们发现,阿拉伯数字不够编号了,怎么办?这时候我们引入了abcdef5的字母,分别编号为10,11,12,13,14,15。同时,为了和10进制区分开,在使用8进制的时候,我们在数字前加0,使用16进制的时候,在数字前面加0x(也许你们见过内存出错的时候提示“内存区0xfff出错!”这样的错误,这就是16进制的表示)。

为什么引入8进制和16进制?因为一大串的0000111011110011这样的数我们人实在不好读出来,采用8进制的时候呢,从二进制转8进制很简单,从最右边开始数,每3个数为一组,也就是这样:

000  000  111  011  110  011

为什么这样呢?因为2的3次方为8嘛,这样八进制表示就是:07363。

 

采用16进制时候同理,从最右边开始,4个二进制数为一组,也就是这样:

0000  1110  1111  0011

这时候16进制表示为:0xef3.

 

在计算机里面,1个二进制表示位我们称之为1bit,//binary digit的缩写。

8个bit成为1byte,byte通常又缩写为B,所以有1 B = 8 bit。1 B又通常被成为1个字节,也就是1 word。C语言里面,我们说int型为4个字节的,也就是有4 * 8, 32bit,具有32个01表示,那么int的最大表示为2^31 – 1,最小为-2^31。unsigned int则为3 ^ 32 – 1。上面这些 -1都是为了表示“ 0“这家伙。

同时来谈谈char这个类型,char型为1个字节,也就是8bit,ASII码就是利用了这8个’0’1’组成序列,比如把 0100 0001(10进制里面的65)表示为’A’这个字符。

谈谈二进制

标签:

原文地址:http://www.cnblogs.com/hznge/p/4987082.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!