进制:

1、二进制的由来和负数二进制表示方法:

a) 先确定一点,计算机使用二进制表示数据,计算机也只认识二进制。

b) 二进制的由来,如下截图:

 

 java菜鸟的回炉之旅十二---二进制

c) 一般情况下,计算机里面使用8个数位 (开关)表示一个整数;一个数位可以表示两个数字,bit(比特)。8bit=1byte(字节)简写为B

d) 计算机里面,二进制的最高位是符号位,符号位上是1 就是负数,是0 就是正数。如下:1000 0001   -1  0000 00001  1

e) 在计算有负数参加的运算时,需要单独处理符号位,而且整个计算过程会很麻烦。过程如下:

i. 把正数先按位取反,就是把原来是1的变成0,是0的变成1

ii. 然后把取反的结果加1,表示这个方式表示正数对应的负数。如:

iii. 0000 0001   1  按位取反:1111  1110 取反结果加1 1111 1111 表示是-1

iv. 1+-1) 就是 0000 0001 +1111 1111 = 1000 0000 0;这里多出的一个1 因为8个数位表示一个整数,所以超出第九位数1会被舍弃,其结果就是,如下:0000 0000

v. 通过吧符号位也参与运算,可以简化了运算,

vi. 那由负数得到正数呢?就是先减1再取反。

f) 

2、八进制和十六进制

a) 用二进制表示数据存在的问题是,数据写出来的时候会很长。所以为了缩短数据的表示,就引入了八进制和十六进制。

b) 八进制,就是将二进制的数字 三个一组写在一起,就形成了八进制。如:2015的二进制表示是:0000011111011111  三位一组:0 000 011 111 011 111  计算出来那就是03737 所以2015的八进制表示为3737

c) 十六进制,将二进制的数字四位一组写在一起,那就是十六进制。

d) 在十六进制中,表示的范围是015,超过9的部分用AF来表示1015。所以看列子:2015的十六进制表示是:0000 0111  1101  1111 计算后的结果就是:7df

e) 通过上面的例子可以看到,八进制和十六进制与二进制相比,数字的书写更加简短。

f) 不同进制的表示方法如下:

i. 二进制表示数字以0b开头:0b1100

ii. 八进制:以0开头 如01100

iii. 十进制:不需要特殊表示

iv. 十六进制:以0x开头。

g) 

3、进制的转换看下表:

a) 二进制八个数位表示一个整数:1 1 1 1 1 1 1 1

b) 十进制  2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0

128 64 32 16 8 4 2 1

c) 例子:二进制转十进制:0b00110101就等于0+0+32+16+0+4+0+1=53

d) 十进制转成二进制:用十进制与二进制上的各位上的数进行比较,如果十进制的数比二进制上表示的数大,那就是1,否则是0;这样比较完一位就减去对应位上的二进制表示的数字。如十进制的123转成成二进制,如下

i. 因位128123大所以,二进制的第8位是0

ii. 接着比较64123小,所以二进制的第7位是1

iii. 123-64=59 32 52小,所以二进制的第6位是1

iv. 59-32=27,而1627小,所以二进制的第5位是1

v. 27-16=11 ,而816小,所以二进制的第4位是1

vi. 依次类推,结果是:123转变成二进制后是  01111011

e) 这种方法叫查表法此外还有短除法,这个大家自行了解了

 

4、那八进制和十六进制之间的转换以及这二者和十进制之间怎么转换呢?其实我们已经知道了,八进制是把二进制的数位每三位一组,而十六进制是每四位一组,那就容易啦,就可以先把进制转成二进制再转成想要的进制就可以啦。

相关文章:

  • 2021-12-02
  • 2022-01-09
  • 2022-12-23
  • 2022-12-23
  • 2021-08-21
  • 2021-10-05
  • 2022-02-18
  • 2021-09-19
猜你喜欢
  • 2022-02-12
  • 2021-12-02
  • 2022-12-23
  • 2021-12-03
  • 2021-11-15
  • 2022-01-15
  • 2021-12-02
相关资源
相似解决方案