一、二进制的起源
二进制(Binary)是由德国数学家和哲学家莱布尼茨首先提出来的。二进制是一种记数系统,只使用0和1两个数字来表示数,逢二进一。二进制在计算机科学、电子工程、数学等领域中得到了广泛的应用,因为可以很方便地表示和处理数字、图像、音频和视频等信息。当然,最重要的一个原因是计算机也只能识别两种物理状态,即开和关,通和断等。
在我们生活当中,最常用的属十进制,逢十进一。当然,还存在着别的进制,比如7进制,典型代表是星期;十二进制,比如月份,60进制,比如钟表的分钟数和秒数;24进制,比如小时。
什么情况下1=12?1年=12月,什么情况下1.5=90?1.5小时=90分钟。为什么这些等式能够成立?这是因为等式的左边和右边采用了不同的进制,而他们之前存在一定的转换关系。
比如我们直接说1=12,那是绝对不可能的,因为在生活中默认等式两边都是十进制,那1只能等于1,12只能等于12,只有1年才会等于12月。很显然,“年”这种数据就是12进制,因为逢12进1。
二、计算机为什么采用二进制?
电子计算机出现以后,使用电子管来表示十种状态过于复杂,所以所有的电子计算机中只有两种基本的状态,开和关。也就是说,电子管的两种状态决定了以电子管为基础的电子计算机采用二进制来表示数字和数据。我们将一种状态表示为0,另一种状态表示为1,所以,计算机只能识别0或1构成的数据。
另外,二进位计数制的四则运算规则十分简单。而且四则运算最后都可归结为加法运算和移位,这样,电子计算机中的运算器线路也变得十分简单了。而且,在电子计算机中采用二进制表示数可以节省设备。由于二进制中只用二个符号 “ 0” 和“1”,因而可用布尔代数来分析和综合机器中的逻辑线路。
最后,二进制的符号“1”和“0”恰好与逻辑运算中的“对”(true)与“错”(false)对应,便于计算机进行逻辑运算。
三、对二进制数的感性认识
二进制 |
十进制 |
0 |
0 |
1 |
1 |
10 |
2 |
11 |
3 |
100 |
4 |
101 |
5 |
110 |
6 |
111 |
7 |
1000 |
8 |
1001 |
9 |
1010 |
10 |
二进制与十进制的对照表
在上面的表中,我们分别从0-10写出了二进制和十进制的数字。先分析右边的十进制,什么是十进制?两个重要信息:第一是有10个阿拉伯数字来表示某一位,第二是逢十进1,所以我们可以看到右侧的内容从0-9都只有一位,直到9+1=10,这个就出现进位的状态,从而服务器托管网变成2位数字。
再观察左侧的二进制,由于二进制只有两个数字0和1表示,且逢二进一。我们可以看到在第三行,即1+1时,结果变成了10,也就是向高位进一。此时的10实际上等于十进制中的2。以此类推,我们起码可以感知到二进制是如何进位的。
读者可以反复的将这张表写几遍,从中找到二进制的进位规则。当你豁然开朗时,那么接下来的二进制与十进制的互换转换,在你脑海中会才映下几个字:嗯,它们之间本来就是这样子转换的!
四、对二进制的理性认识
对于程序员而言,进制转换是必须要掌握的,虽然在高级语言中,我们通常定义和使用的数据类型,不管是小数还是整数,都是十进制的,但是涉及到较底层的开发,或者串口和网口的通讯开发,我们免不了要直接处理二进制、八进制、十六进制数据,这就面临它们与十进制数据的转换。接下来,我们以两个示例来说明二进制转十进制和十进制转二进制的算法。
4.1十进制转二进制
十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并。
十进制整数转换为二进制整数采用”除2取余,逆序排列”法。具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。
我们以177为例,转成二进制则为:10110001
4.2二进制转十进制
二进制转十进制通常采用按位权展开法,将二进制数的每一位上的数乘以2的n次方,n等于这一位所在的位置。按位权展开法会将这些乘积分别相加,从而得到每一位的十进制结果,并将这些结果相加以得到最终的十进制结果。
五、结论
二进制数字的每一位只能是0或1,基数是2,所以逢2进1。二进制中的位是计算机数据的最小单位 ,英文表示为bit。而计算机数据的基本单位是字节,英文名为Byte。一个字节有8个位,那么8个位都是0或1的二进制数分别等于十进制的多少?
00000000=0,11111111=255。
可以得出结论,计算机中的一个字节可以表示256个数字。但是,在某些编程语言中,1byte表示的范围是0-255,有的是-128到+127。
Byte也是一种C#数据类型
在C#的数据类型中,byte也是其中的一种数据类型哦,它的范围是0-255。它能表示256个数字。
不管是程序员开发的程序代码,还是这些程序代码所处理的数据,最终都会以二进制的形式“跑”在计算机的CPU与存储器之间。程序代码会被编译成一条一条的二进制机器指令,而数据也是二进制的数据。比如内存,它的地址是二进制形式的数据,它上面存储的数据或指令也都是二进制形式的。
下一节,我们来聊一聊内存,这有助于我们后面学习C#编程哦。
——重庆教主 2023年11月30日
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net