数据是用二进制数表示的

计算机内部是由IC这种电子部件构成的。前面所讲的CPU和内存也是IC的一种。IC的这个特性,决定了计算机的信息数据只能用二进制来处理。虽然二进制并不是专门为IC而设计的,但是和IC的特性非常吻合。计算机处理信息的最小单位-位,就相当于二进制中的一位。位的英文bit是二进制数位(binary digit)的缩写。8位二进制数被称为一个一个字节。字节是最基本的信息计量单位。位是最小单位,字节是基本单位。内存和磁盘都使用字节单位来存储和读写数据,使用位单位则无法读写数据。因此,字节是信息的基本单位。程序中,即使是用十进制数和文字等记述信息,在编译后也会转换成二进制数的值,所以,程序运行时计算机内部处理的也是用二进制数表示的信息。对于用二进制数表示的信息,计算机不会区分它是数值、文字,还是某种图片的模式等,而是根据编写程序的各位对计算机发出的指示来进行信息的处理(运算)。
二进制数的值转换成十进制数的值,只需将二进制数的各位数的值和位权相乘,然后将相乘的结果相加即可。数字的位数不同,位劝也不相同。位权的思考方式也同样适用于二进制数。十进制是以10为基数的运算,二进制是以2为基数的运算。各数位的数值与位权相乘后“相加”这个处理的原因是:大家所说的数值,表示的就是构成数值的各数位的数值和位权相乘后再相加的结果。
移位运算指的是将二进制数值的各数位进行左右移位的运算。移位有左移(向高位方向)和右移(向低位方向)两种。在一次运算中,可以进行多个数位的移位操作。移位运算也可以通过数位移动来替代乘法运算和除法运算。
二进制中表示负数值时,一般会把最高位作为符号来使用,因此我们把这个最高位称为符号位。符号位是0时表示正数,符号位是1时表示负数。编程语言包括的整数数据类型中,有的可以处理负数,有的不能处理。补数就是用正数来表示负数。为了获得补数,我们需要将二进制数的个数位的数值全部取反,然后再将结果加1。补数的思考方式虽然直观上不易理解,但逻辑上却非常严谨。补数求解的变换方法就是取反“+1”。结果不为0的运算,同样可以通过使用补数来得到正确的结果。总之,要想使结果为零,就必须通过补数来实现。
当二进制数的值表示图形模式而非数值时,移位后需要在最高位补0。类似于霓虹灯向右滚动的效果,这就称为逻辑右移。将二进制数作为带符号的数值进行运算时,移位后要在最高位填充移位前符号位的值(0或1)。这就称为算术右移。只有在友谊时才必须区分逻辑位移和算术位移。左移时,无论是图片模式(逻辑左移)还是相乘运算(算术左移),都只需在空出的低位补0即可。以8位二进制数为例,符号扩充就是指在保持值不变的前提下将其转换成16位和32位的二进制数。也就是说,不管是正数还是用补数表示的负数,都只需用符号位的值(0或者1)填充高位即可。这就是符号扩充的方法。
在运算中与逻辑相对的术语是算术。我们不妨这样考虑,将二进制数表示的信息作为四则运算的数值来处理就是算术。而像图片模式那样,将数值处理为单纯的0和1的罗列就是逻辑。计算机能处理的运算大体可分为算术,运算和逻辑运算。算术运算是指加减乘除四则运算。逻辑运算是指对二进制数个数字位的0和1分别进行处理的运算,包括逻辑非(NOT运算)、逻辑与(AND运算)、逻辑或(OR运算)和逻辑异或(XOR运算)四种。逻辑非指的是0变成1,1变成0的取反操作。逻辑与指的是“两个都是1”时,运算结果为1,其他情况下运算结果都为0的运算。逻辑或指的是“至少有一方是1”时,运算结果为1,其他情况下运算结果都是0的运算。逻辑异或指的是排斥相同数值的运算。不管是几位的二进制数在进行逻辑运算时都是相对应的,个数位分别进行运算。如果将二进制的0作为假(false),1作为真(true)来考虑,逻辑运算也可以被认为是真假的运算。真和真的AND运算结果为真,实际上也确实如此。因为如果两方面都是真,答案就是真。

posted @   木土琰  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示