博文
关于计算二进制数有多少个1(2012-01-31 23:11:00)
摘要:摘自 http://www.cnblogs.com/graphics/archive/2010/06/21/1752421.html
方法一: 普通法
int n,counter=0;
scanf("%d",&n);
while(n)
{
if(n&1==1)
counter++;
n>>=1;
}
精简化:
int n,counter;
for(counter=0;n;n>>=1)
{
counter+=n&1;
}
方法二:快速法
int n,counter=0;
while(n)
{
n&=(n-1);
counter++;
}
方法三: 平行法
......
sizeof详解(2012-01-31 21:59:00)
摘要:我对C++的掌握尚未深入,其中不乏错误,欢迎各位指正啊
1. 定义:
sizeof是何方神圣sizeof乃C/C++中的一个操作符(operator)是也,简单的说其作
用就是返回一个对象或者类型所占的内存字节数。
MSDN上的解释为:
The sizeof keyword gives the amount of storage, in bytes, associated with a
variable or a type (including aggregate types).
This keyword returns a value of type size_t.
其返回值类型为size_t,在头文件stddef.h中定义。这是一个依赖于编译系统的值,一
般定义为
typedef unsigned int size_t;
世上编译器林林总总,但作为一个规范,它们都会保证char、signed char和unsigned
char的sizeof值为1,毕竟char是我们编程能用的最小数据类型。
2. 语法:
sizeof有三种语法形式,如下:
1) sizeof( object ); // sizeof( 对象 );
2) sizeof( type_name ); // sizeof( 类型 );
3) sizeof object; // sizeof 对象;
所以,
int i;
sizeof( i ); // ok
sizeof i; // ok
sizeof( int ); // ok
sizeof int; // error
既然写法3可以用写法1代替,为求形式统一以及减少我们大脑的负担,第3种写法,忘
掉它吧!
实际上,sizeof计算对象的大小也是转换成对对象类型的计算,也就是说,同种类型的
不同对象其sizeof值都是一致的。这里,对象可以进一步延伸至表达式,即sizeof可以
对一个表达式求值,编译器根据表达式的最终结果类型来确定大小,一般不会对表达式
进行计算。如:
sizeof( 2 );// 2的类型为int,所以等价于 sizeof( int );
sizeof( 2 + 3.14 ); // 3.14的类型为double,2也会被提升成double类型,所以等价
于 si......
半数循环时用减法法代替乘法(2012-01-31 00:25:00)
摘要:做循环的时候,如果条件是
a=0;a<=b/2;a++;
由于加减运算比乘除运算更快,可以取代为
a=0;a<=b-a;a++;......
