[cpp005]数字表示

90 阅读2分钟

1、数字表示方式:

  • 十进制: 也就是我平常使用的计数方式,采用逢十进一的方式增加数字大小(都会算数,没啥好讲的)

2、二进制数: 

  • 计算机所能认识的数字表示,逢二进一,计算机中的脉冲以0和1进行抽象表示电流的通断.
  • 十进制与二进制相互转换方式:

1)、10的二进制表示,采用短除法,将数字不断除于2,得到商和余数,如果商不为0,则继续除于2.直到商为0停止,最后将每次计算得到的余数由后向前排列,就是二进制的方式了.

10除于2, 商为5,余数为0
 5除于2, 商为2,余数为1
 2除于2, 商为1,余数为0
 1除于2, 商为0,余数为1
--》由下到上讲余数排列结果就是二进制: 1010
  • 短除法每次得到的余数一定是0或1,因为数字只有奇偶之分. 
  • 而且最后求的商一定是0和余数1
  • 除于2的次数,也对应着这个数字的大小,超过了2的几次方

2)、二进制转成十进制: 从右往左顺序,数字0或1,乘以2的次方,最后相加

二进制: 1010
-》 0*20次方 + 1*21次方 + 0*22次方 + 1*23次方
-〉 0         + 2         + 0         + 8  = 10

3、十六进制数

  • 4个二进制位的大小范围为0到15,对应(0000 - 1111)
  • 可以使用一个16进制表示,其中0到9相同,10对应A,11-B,12-C,13-D,14-E,15-F

4、负的二进制数

  • 带符号整数,二进制最左边的位作为符号位. 0表示正数,1表示负数
  • 负数相加,例如 12加上-8,不是将他们的二进制位相加,而是通过负数的补码实现
-8的二进制为:         1000 1000
12的二进制为:         0000 1100
如果直接相加的结果为:   1001 0100  -》结果为:-20,而不是结果

计算机做法是:
求8的二进制:   0000 1000   -〉(反对二进制数字,得到对应补码)
8对应补码为:   1111 0111   -》(这个数加1,就得到-8的补码)
-8的补码为:   1111 1000
使用-8的补码与12的二进制相加: 0000 0100
  0000 1100
+ 1111 1000
= 0000 0100 -》 4

5、八进制

  • 八进制对应0到7,一共8个数字的表示,逢八进一

6、浮点数

  • 浮点数并不只是代表小数,还可以处理极大的数字