计算机的语言—二进制

  • 计算机内部都是由IC(集成电路)组成的,它们只具有两种状态,==高电平和低电平==,这个特性决定了计算机的数据只能以二进制来处理。
  • 计算机处理的最小单位:位,就相当于二进制中的一位,也叫做bit。
  • 八位二进制数被称为一个字节,字节(byte)是基本信息计量单位,是基本单位。
  • 再用字节处理数据时,==如果数字小于存储的字节数==,那么高位就用0占位填补。
  • ==二进制数可以表示文字==,==图像等==,其表示的内容取决于程序的编写方式。

二进制数的计算

  • 二进制数的本质就是逢二进位,那么它与十进制的转化就是用每一位的数字乘以它的位权。位权的意思就是基数的对应位数指数。 指数由第一位开始向左累加。

移位运算

  • 移位运算是指将二进制数值个数为进行左右的移位。==移位有左移==,==右移两种==。
    • 运算符:<<被称为左移运算符,>>被称为右移运算符,两者的左侧是被移位值,右侧是要移位的位数。
    • 左移:左移空出的低位要进行补0操作。
      移位可以重来充当乘除法运算,左移两位数值会变为原来的4倍。
    • 右移:二进制中表示负数值时,==会将最高位当作符号位来使用==,如果最高位为0则为正数,反之为1则为负数。
      这就区分了有符号数和无符号数,有符号数就是有符号位的数
    • 补数:因为计算机实际上是在做加法运算来进行减法。![[计算机底层结构——1#^3cacdc]]
      获得补数的方式就是将全部数位取反再加1,补数与原来的数字之和为0,这很像是相反数。
  • 计算机中,0包含在正数范围内,所以负数要比真正的正数多一个。

逻辑右移与算术右移

  • 逻辑右移: 当二进制数的值表示图形模式而非数值时,移位后就需要在最高位前补0
  • 算术右移:移位后需要在最高位前填充移位前的符号位的值,比如若为0,则需要填充1,反之亦然。

符号扩充

  • 在保持值不变的情况下,将原有的低位数转化为高位数,直接用符号位填充前面的所有位数。

逻辑运算:

  • 逻辑非:1变0,0变1的取反操作
  • 逻辑与:两者同时为1时,结果为1
  • 逻辑或:至少一方为1时,结果为1。
  • 逻辑异或:排斥相同,相同为0不相同为1

八进制与十六进制

  • 在使用二进制存储数据时,我们往往会出现大量的数据,而如何简化其表示,以便操作,就是我们要考虑的问题,因此,==我们出现了将二进制转化为8进制甚至16进制的操作==。

八进制

  • 八进制是二进制的简化表示,每位八进制数对应三位二进制数
    二进制 001 = 八进制 1 二进制010 = 八进制2

二进制转化为八进制

  • 将二进制三位一组分开,每三位表示八进制数一位
  • 如1011101 按三位一组分组 001,011,101(注意,高位是00可以直接省略)
  • 对应八进制数135

十六进制

  • 16进制数分为0,T,2,3,4,5,6,7,8,9,A,B,C,D,E,F
  • 每位十六进制数对应四位二进制数
  • 二进制0000 = 十六进制0
    二进制0001 = 十六进制1
    二进制1111 = 十六进制F

二进制转化为十六进制

  • 将二进制数每四位一组进行分割,每组对应一位十六进制数
  • 如二进制数11011010四位一组为1101,1010
    对应十六位数DA