9月21号 第一天

二进制学习
1234 = 1*10^3+2 * 10^2+3 * 10^1+ 4* 10^0  = 1234   十进制表示方法




01234 = 1*8^3+2 * 8^2+3 * 8^1+ 4* 8^0  = 668    八进制表示方法




0x1234 = 1*16^3+2 * 16^2+3 * 16^1+ 4* 16^0     十六进制表示方法




碾除法(被除数变为零时,计算结束。从上往下读取余数,得到结果)


举例:
   99 转化成 八进制
     
       99 / 8  12 余 3
       12 / 8  1 余 4
       1/ 8   0 余 1




99 = 0143 
    


   49 转化成 十六进制


    49 / 16  3 余 1
     3 / 16  0 余 3




   49 = 0x31


  117 转化成 二进制


  117 / 2   58 余 1
  58  / 2   29 余 0
  29  / 2   14 余 1
   14 / 2   7 余 0
   7 / 2   3 余 1
   3 / 2   1 余 1
    1 / 2   0 余 1




117 = 0000  0000 0111 0101




 二进制表示时,至少写八位,不足时高位用0补






八进制 转 十六进制
二进制 转 八进制
十六进制 转 二进制


原则上 都要先转十进制过渡


但也有规律:
 
0xffff = 1111 1111 1111 1111  每一个十六进制数都可以表示为四位的二进制数


实例



0x1234 =     0001 0010 0011 0100 
0x123   =     0000 0001 0010 0011
0x12345 =   0001 0010 0011 0100 0101 = 0000 0000 0000 0001 0010 0011 0100 0101s


每一位八进制数都可以表示成3位的二进制数,例如


0123 = 001 010 011 =  0000 0000  0101  0011
0567 = 101 110 111 =  0000 0001 0111 0111
0672 = 110 111 010 =  0000 0001 1011 1010






用十条狗找出1000瓶药水中有毒的那瓶。要用狗去舔药水,毒药会在第二天发作,而我们需要在第二天找到有毒的那瓶药水


为1000瓶 药水编号,并转化为二进制编码,为十条狗固定排序,用二进制数的方式舔药水
十条狗共有1023种舔法,在第二天根据死亡的狗得到毒药的二进制编码,以得到毒药的编号。
示例如下:


如第一瓶要编号为1,二进制编码为 0000 0000 0000 0001,那么在十条狗对应位置是1的那条狗舔药水。


如药水的编号为300,二进制编码为 0000 0001 0010 1100,那么在十条狗对应位置是1的那四条狗舔药水。


这样,由于每瓶药水的二进制编码不同,对应去舔这瓶药水的狗组合也不同。十条狗的组合方式足够将全部药水舔完。
我们只需要根据十条狗中的那些位置的死亡,就可以判断出那瓶药水有毒。

你可能感兴趣的:(9月21号 第一天)