用二进制表示数据

   为何要使用二进制表示计算机信息呢?因为计算机中一个叫IC的电子部件,它有很多引脚,但这些引脚只有直流电0v或5v两个状态,也就是只能表示这两种状态,这一特性也就决定了计算机的信息数据只能用二进制数来处理,但并非说二进制是专门为IC而设计的,只是和IC的特性非常吻合。计算机处理信息的最小单位——位。 
     为什么二进制数的位数一般是8位、16位、32位等……?这是因为计算机所处理的信息的基本单位是8位二进制数,也就是一个字节,而字节是最基本的信息计量单位。同时值得一提的是内部和磁盘都是使用字节单位存储和读写数据的,若使用位单位则无法读写。这就是字节是信息的基本单位的原因。若字节单位处理数据时,数字小于存储数据的字节数(即小于二进制数的位数),高位就用0填补。 在程序中,使用十进制数、文字、图片等记述信息计算机也是无法区分的,程序运行时计算机内部处理也是转换成二进制数表示信息的。例子如图所示:
既然知道了二进制数在计算机运行程序中有不可或缺的作用,那么到底什么是二进制呢?若想了解二进制就需要先了解位权,位权就是(某进制)的(数的位数-1)次幂。{例如:二进制第一位是2的0次幂(=1),的二位2的1次幂(=2),第三位2的2次幂(=4)......,第八位2的7次幂(=128)。} 而二进制转化为十进制就是各数位的数值和位权相乘后再相加就完成了转换。例如00100111转化为十进制后就是39.,过程如下:
当我了解了二进制后自然要深入了解它所涉及的运算了,其实四则运算不仅在十进制适用,二进制自然也可以,只是注意逢二仅为即可,所以四则运算并非主要,二进制有自己特有的运算——移位运算,也是了解程序运行原理的关键。移位运算是将二进制数值的各数位进行左(向高位方向)右(向低位方向)移动的运算,而且一次运算中可进行多个数位的移位操作。若要运用移位运算当然要使用它特有的运算符——左移运算符(<<)和右移运算符(>>) ,使用时需记得运算符左侧是被移位的值,右侧是需要移位的位数,例如: 

其中39就是被移位的值,2就是移位的位数。对于程序运行不论你使用的几进制都不必担心无法用移位运算,因为计算机内部都会将其转换成二进制数来处理,还需注意左移空出来的低位要用0补充,而溢出来的数字丢弃即可。还是给出39这一例子二进制数时是00100111若将其向左移2位就变成了10011100转换成十进制就是156。而移位运算也可以代替乘除运算,像00100111左移后结果10011100就变成了原来的4倍,而转换为十进制后156刚好是39的4倍。而对于右移后的填充有0和1两种形式至于什么时候填1或0需要知道二进制表示负数的方法,对于二进制表示负数时,一般会把最高位作为符号来使用,因此最高位又叫做符号位,当符号位为0表示正数,为1表示负数。我们还需要知道计算机是通过加法运算来实现减法运算的。这是如何实现的?这时就运用了“二进制的补数”也就是用正数来表示负数,获取补数就需要将二进制的各数位的数值全部取反,再将结果加1.所以-1的二进制数就是11111111: 

 

若想证明可以通过相加为0来验证,另外只有在右移时候才必须分逻辑右移(二进制表示图形而非数值时,移位后需要在最高位补0)和算术右移(二进制数作为带符号的数值进行运算时,移位要在最高位填充移位前符号位的值)如图所析:

 

posted @ 2024-02-04 21:44  风吹叶声响  阅读(51)  评论(0编辑  收藏  举报