博文

关于计算二进制数有多少个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++; } 方法三: 平行法 ......

阅读全文(1581) | 评论:0

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......

阅读全文(1045) | 评论:0

半数循环时用减法法代替乘法(2012-01-31 00:25:00)

摘要:做循环的时候,如果条件是 a=0;a<=b/2;a++; 由于加减运算比乘除运算更快,可以取代为 a=0;a<=b-a;a++;......

阅读全文(1234) | 评论:0