玩转密码吧 关注:29贴子:946
  • 10回复贴,共1

进制详解(二进制&十六进制)【转】

取消只看楼主收藏回复

二进制
就不解释什么是二进制了,可以去百科读一读。
二进制字面上的意思就是 逢二进一。
密码中常用到的是十进制(就是正常的数字)与二进制之间相互的转换。
二进制里只有0和1。
(怎么进我也解释不清楚,下面会列出0-15,大家自己琢磨琢磨。。)
0 = 0000
1 = 0001
2 = 0010
3 = 0011
4 = 0100
5 = 0101
6 = 0110
7 = 0111
8 = 1000
9 = 1001
10 = 1010
11 = 1011
12 = 1100
13 = 1101
14 = 1110
15 = 1111


来自Android客户端1楼2014-02-23 11:59回复
    如果上面的琢磨不出来,那看看这里。。
    打个比方,1和2。
    1在二进制里就是1,2得往1上加1。
    0001 加1的话,按理来说是0002,记住 逢二进一,所以就往前面一位进1,后面那位变回0。
    得出 0010
    3和4
    3是0011,加1的话,最后一位逢2了,所以归零然后往倒数第二位进1。
    倒数第二位又2了,所以再往倒数第三位进1。得出0100 。
    【也不知道有没有人看得懂= =】


    来自Android客户端2楼2014-02-23 12:00
    回复
      好吧,到这里,如果懂了的话,说说16换成二进制是多少?17,18,19,20呢?
      当然,如果你的计算器像我的这样可以转换二进制和十进制的话,那要方便的多。。。


      来自Android客户端4楼2014-02-23 20:10
      回复
        十进制转换二进制算法(整数):
        “除以2取余,逆序排列”(除二取余法)
        用百科里的例子:(89)10 =(1011001)2
        89÷2 ……1
        44÷2 ……0
        22÷2 ……0
        11÷2 ……1
        5÷2 ……1
        2÷2 ……0
        1
        从上面可以看出,就是将整数除以2,然后取余数,再将得数除以2,再取余数。
        循环此步骤,直到得数是1 。之后取余数,倒叙排列,得出二进制。
        来试试把127换成二进制。
        127÷2=63 ……1
        63÷2=31 ……1
        31÷2=15 ……1
        15÷2=7 ……1
        7÷2=3 ……1
        3÷2=1 ……1
        1
        所以(127)10 = (111111)2
        如果整数是2的次方,比如,128是2的7次方,
        那128换成二进制就是 1后面7个0, 1000 0000


        来自Android客户端5楼2014-02-23 20:11
        收起回复
          十进制转换二进制算法(小数):
          “乘以2取整,顺序排列”(乘2取整法)
          百科里的例子: (0.625)10 = (0.101)2
          0.625X2=1.25 ……1  (取出整数1)
          0.25 X2=0.50 ……0  (用上一步得出的小数再乘以2,取整数位的0)
          0.50 X2=1.00 ……1 (得出1,结束)
          可见,就是用小数乘以2,取出整数位的数,然后用小数再乘以2,直到得数是1。
          那我们来试试0.375转换成二进制。
          0.375 X 2 = 0.75 取0
          0.75 X 2 = 1.5 取1
          0.5 X 2 = 1.0 取1
          所以 (0.375)10 = (0.011)2
          【这个貌似不常用到,有些小数算不尽的……了解一下就好】


          来自Android客户端6楼2014-02-23 20:11
          回复
            二进制转十进制的算法:
            这个比较简单,用2的次方相加。直接给例子:
            11111101 换成十进制。
            1  1  1  1  1  1  0  1
            2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0
            2的次方数从0开始,从左向右增加。【记得是从0开始】
            接下来要做的就是,把1的位置对应的2的次方的得数相加,0的无视:
             2^7 + 2^6 + 2^5 + 2^4 + 2^3 + 2^2 + 2^0
            = 128 + 64 + 32 + 16 + 8 + 4 + 1
            = 253
            (11111101)2 = (253)10
            所以如果是五位数那次方就是0-4
            以此类推


            来自Android客户端7楼2014-02-23 20:14
            收起回复
              二进制转十六进制:
              十六进制是由0-9,A-F组成。
              0在二进制中是0000,F代表15,在二进制中是1111
              由此可见十六进制对应的二进制顶多4位数。
              所以如果碰到多过4位的,就在前面加0,弄成4 4分
              例: 把 1111111 转成十六进制数
              由于是7位,所以在前面加0后4 4分 → 0111 1111
              先看 0111,用上面二进制转十进制的算法: 2^2 + 2^1 + 2^0 = 7
              再看 1111,同样的算法(或者记得1111是15):2^3 + 2^2 + 2^1 + 2^0 = 15 = F
              所以 1111111 = 7F
              --------------------------------------------------------------------------------
              因为都是四位数,所以只要熟练了二进制转十进制的算法就可以算的很快。
              X  X  X  X
              2^3 2^2 2^1 2^0
              8  4  2  1
              四位数分别是 8 4 2 1,只要取X=1的那位相加。
              来试试把 AF 换成二进制。
              A = 10 , F = 15
              先看A。
              8 4 2 1这四个数要怎么相加才能等于10呢?
              8+2,→ 1010
              F=15, 8+4+2+1=15 → 1111
              所以AF换成二进制是 1010 1111


              来自Android客户端18楼2014-02-23 21:15
              回复


                来自Android客户端23楼2014-02-23 21:42
                回复
                  十六进制和八进制是二进制的缩写形式,因为二进制过于长所以才有的这两种进制。
                  八进制就是三位二进制数进行排列,从000开始,至111结束一共八种,对应1~8。十六进制就是四位二进制数,从0000开始至1111结束,一共十六种,对应1~f。


                  来自Android客户端24楼2014-02-23 21:43
                  回复
                    十进制整数转换二进制方法是除基取余,倒序排列。小数部分,乘基取整,顺序排列。
                    一位八进制数对应三位二进制数。
                    一位十六进制数对应四位二进制数。


                    来自Android客户端25楼2014-02-23 21:44
                    回复


                      来自Android客户端26楼2014-07-11 10:18
                      回复