数学吧 关注:885,633贴子:8,728,089
  • 2回复贴,共1

问一个没想明白的问题

只看楼主收藏回复

一个64位的2进制数,其中4位是1,其他60位全为0(这样一共有C64,4=635376个数),将他们按照从小到大的顺序排起来。现在随便写一个符合上述条件的数,如何确定这个数是第几个数(就比如111010....00是第635375个数)


IP属地:广东来自Android客户端1楼2021-04-18 01:30回复
    0...0001111是第一个
    0...0010111是第二个
    0...0011011是第三个
    0...0011101是第四个
    0...0011110是第五个
    0...0100111是第六个
    所以我在想看最左边的1在哪个位置得到一个最小值,
    比如最左边的1是第五位那就说明这个数的位置大于1(C3,0=1,3是右边的数位,0是0的个数)
    最左边的1在第六位说明这个数大于5(C4,1+C3,0=4/1+1=5)
    最左边的1在第七位这个数大于C5,2+C4,1+C3,0=5*4/2/1+4/1+1=15


    IP属地:广东来自Android客户端2楼2021-04-18 01:46
    回复
      但是我感觉这样位数多了以后会很麻烦


      IP属地:广东来自Android客户端3楼2021-04-18 01:46
      回复