æ´æ°ã®ä¸ã§ç«ã£ã¦ãããããæ°ãæ±ããæ¹æ³
è¨æ£: æ´æ°ä¸ã«ç«ã£ã¦ãããããæ°ã§ã¯ãªããç«ã£ã¦ãããããã®æå·¦ä½ç½®ãæ±ããæ¹æ³ã§ããã
java.util.BitSetã®ã½ã¼ã¹ä¸ã§ãæ´æ°ä¸ã«ç«ã£ã¦ãããããæ°ãæ°ããã¡ã½ãããé¢ç½ãã£ãã®ã§è¼ãã¦ã¿ã¾ãã
äºåæ¢ç´¢ããã¿æ¸ããã¦ãã¦ãæ大6åã®æ¯è¼ã§ãããæ°ãæ±ã¾ãã¾ãããã®æ¹æ³ãæéãªã®ããªã
private static int bitLen(int w) { return (w < 1<<15 ? (w < 1<<7 ? (w < 1<<3 ? (w < 1<<1 ? (w < 1<<0 ? (w<0 ? 32 : 0) : 1) : (w < 1<<2 ? 2 : 3)) : (w < 1<<5 ? (w < 1<<4 ? 4 : 5) : (w < 1<<6 ? 6 : 7))) : (w < 1<<11 ? (w < 1<<9 ? (w < 1<<8 ? 8 : 9) : (w < 1<<10 ? 10 : 11)) : (w < 1<<13 ? (w < 1<<12 ? 12 : 13) : (w < 1<<14 ? 14 : 15)))) : (w < 1<<23 ? (w < 1<<19 ? (w < 1<<17 ? (w < 1<<16 ? 16 : 17) : (w < 1<<18 ? 18 : 19)) : (w < 1<<21 ? (w < 1<<20 ? 20 : 21) : (w < 1<<22 ? 22 : 23))) : (w < 1<<27 ? (w < 1<<25 ? (w < 1<<24 ? 24 : 25) : (w < 1<<26 ? 26 : 27)) : (w < 1<<29 ? (w < 1<<28 ? 28 : 29) : (w < 1<<30 ? 30 : 31))))); }