int转二进制多少个1
int转二进制1个1。
void totalOne(int x){int count = 0;while(x){x = x & ( x - 1 );count++;}printf("count = %d/n", count);}循环:x = x & ( x - 1 ); count++; 直到x为0为止。该方法的时间复杂度是O(m) 在此,不妨把x的二进制位表示为 x=an-1an-2...a0。
按从低位到高位的顺序,不失一般性,假设x的第i位为第一个为1的二进制位,即:ai=1。此时有: x =an-1an-2...ai+1100...0 <1> (x-1) =an-1an-2...ai+1011...1 <2> 很明显,从式1和式2可以得出。
表示范围:
C语言没有规定各种整数类型的表示范围,也就是说,没有规定各种整数的二进制编码长度,对于int和long,只规定了long类型的表示范围不小于int,但也允许它们的表示范围相同。具体C语言会对整型和长整型规定表示方式和表示范围。
使用技巧:标准函数INT(X)其基本功能是得到一个不大于X的最大整数,如INT(3.59)=3,INT(-2.01)=-3。INT函数是一个用途很广的函数,在教学中能有目的的分列其使用技巧。