二进制数

要想对程序的运行机制形成一个大致印象,就要了解信息(数据)在计算机内部是以怎样的形式来表示的,又是以怎样的方法进行运算的。

使用二进制数表示计算机信息的原因

计算机内部由IC电子部件(如CPU、内存等)构成,IC的所有引脚只有直流电压0V或5V两个状态。也就是说,IC的一个引脚,只能表示两个状态。

IC的这个特性,决定了计算机的信息数据只能用二进制数来处理。由于1位(1个引脚)只能表示两种状态,所以二进制的计数方式就变成了0,1,10,11,100...这种形式。虽然二进制数并不是专门为IC而设计的,但是和IC的特性非常吻合。

计算机处理信息的最小单位 --- 位,就相当于二进制中的一位。位(bit)是二进制数位(binary digit)的缩写。

4933701-d6c952279715d866.png
IC的一个引脚表示二进数的1位

二进制数的位数一般是8位、16位、32位、64位...也就是8的倍数,这是因为计算机所处理的信息的基本单位是8位二进制数。8位二进制数被称为一个字节(byte)。字节是最基本的信息计量单位。位是最小单位,字节是基本单位。内存和磁盘都使用字节单位来存储和读写数据,使用位单位则无法读写数据。因此,字节是信息的基本单位。

用字节单位处理数据时,如果数字小于存储数据的字节数(即等于二进制数的位数),那么高位上就用0填补。

例如:6位二进制数100111,8位表示时为0010 0111,16位表示时为0000 0000 0010 0111

例如:奔腾等32位微处理器,具有32个引脚用于信息的输入和输出。也就是说,奔腾一次可以处理32位(4字节)的二进制数信息。

程序中,即使是使用十进制数和文字等记录信息,在编译后也会转换成二进制数的值。所以,程序运行时计算机内部处理的也是用二进制数表示的信息。

4933701-b20e415df44901c7.png
计算机内部所有信息都用二进制数处理

对于用二进制数表示的信息,计算机不会区分它是数值、文字、图片等,而是根据编写程序的人员对计算机发出的指示来进行信息的处理。

什么是二进制数

  • 数字的位数不同,位权也不同。
  • 二进制数是以10位基数的计数方法,二进制数则是以2位基数的计数方法。


    4933701-7e548e1c0bd5f625.png
    二进制数转换成十进制数

移位运算和乘除运算的关系

移位运算指的是将二进制数值的各数位进行左右移位(shift,移位)的运算。移位有左移(向高位方向)和右移(向低位方向)两种。

// 将变量i的值左移两位
int i = 39;
int j = i << 2; //左移后空出来的低位要补上0
4933701-7ddcb6fbf61881e1.png
左移后空出来的低位补零

移位运算可通过数位移动来代替乘法运算和除法运算,十进制数左移后变量原来的10倍、100倍、1000倍...,二进制数左移后变成原来的2倍、4倍、8倍...,反之右移则是原来的倒数。

便于计算机处理的补数

右移后用来填充右移后空出来的高位的数值,有0和1两种形式。想要区分什么时候补0什么时候补1,只要掌握了用二进制数表示负数的方法即可。

二进制数中表示负数值时,一般会把最高位作为符号来使用,因此我们可把这个最高位称为符号位。符号位是0表示正数,符号位是1时表示负数。

4933701-5df0769d403b81d9.png
负数表示有误时的情况
4933701-f702cc2b4c4f25ac.png
负数表示正确时的情况

计算机在做减法运算时,实际上内部是在做加法运算。为此,在表示负数时就需要使用“二进制的补数”。补数就是用正数来表示负数。为了获得补数,需要将二进制数的各数位的数值全部取反,然后再将结果加1。

4933701-53df12ecaaf10bb5.png
获取0000 0001的补数的方法
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值