进制的学习笔记

283746:十进制,以10为底的n次幂计算权值
2*100000+ //100000称为权值
8*10000+
3*1000+
7*100+
4*10+
6
权值 = 10为底的n次幂

十六进制,是以16为底的n次幂计算权值,逢16进1
二进制,是以2为底的n次幂计算权值,逢2进1

0x2315 (十六进制 以0x开头的)
2*16^3+
3*16^2+
1*16^1+
5*16^0 = 8981

01011101 (二进制 以0b开头)
0*2^7+
1*2^6+
0*2^5+
1*2^4+
1*2^3+
1*2^2+
0*2^1+
1*2^0 = 93


十进制        二进制       十六进制
  0     0000      0
  1     0001      1
  2     0010      2
  3     0011      3
  4     0100      4
  5     0101      5
  6     0110      6
  7     0111      7
  8     1000      8
  9     1001      9
  10   1010      A
  11   1011      B
  12   1100      C
  13   1101      D
  14   1110      E
  5     1111      F
  16   1000      0

一个十六进制数正好可以表示4个bit(十六进制数的进率是16,二进制数的进率是2,且16=2^4,说明二进制数连续进位4次,等效于16进制数进1位。)
二个十六进制数正好可以表示1个字节
0xCA --1000 1010
0101 1011 -- 0x5B
0x7CF825ED
0111 1100 1111 1000 0010 0101 1110 1101

0110 1011 0101 0111 --0x6B57

0x9EB2C3D8
1001 1110 1011 0010 1100 0011 1101 1000

0011 0111 1010 1010 1000 1010 0101 0101
0x37AA8A55


数据的二进制保存
计算机中数据全部以二进制补码的形式保存(好处:简单稳定效率高)
正数和负数在二进制中是通过最高位的符号来决定的
符号位如果是0表示这个数是正数
符号位如果是1表示这个数是负数

正数的补码就是原码
0011 1011 --byte型数据,符号位为0表示这个数是正数
0x3B--59

负数的补码就是它的相反数的原码全部取反+1得到(可以先减1然后取反,或者先取反在加1)
1101 1011 --这是一个负数,并且是补码
0010 0100 --0x25 --37
所以结论是 1101 1011 是-37

练习,在计算机中,一下两个数分别是多少?
(1)0110 1011
1*2^6 + 1*2^5 + 1*2^3 + 1*2^1 + 1 = 107
(2)1101 1010
取反 0010 0110 --0x26 -- 38
结果为 -37

1111 1111 是负数,负多少?
  -1 变成1111 1110
  取反0000 0001 --1
  所以1111 1111 是-1

1000 0000 是负数,负多少?
  -1 变成1000 0000 --0x80 --128

 

posted @ 2020-05-24 22:34  扎哇菜鸟  阅读(464)  评论(0)    收藏  举报