code for fun

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
上一页 1 2 3 4 5 6 ··· 8 下一页

2014年2月26日

摘要: Problem DescriptionHey, welcome to HDOJ(Hangzhou Dianzi University Online Judge).In this problem, your task is to calculate SUM(n) = 1 + 2 + 3 + ... + n.InputThe input will consist of a series of integers n, one integer per line.OutputFor each case, output SUM(n) in one line, followed by a blank ... 阅读全文
posted @ 2014-02-26 02:24 xueda120 阅读(553) 评论(0) 推荐(0) 编辑

2013年6月27日

摘要: 本篇文章介绍计算二进制数字尾部连续0的数目的相关算法,例如:v=(1101000)2,该数尾部连续0的数目=3方法1:线性时间算法unsigned int v; // 需要计算的目标整数int c; // c用来保存计算的结果if (v){ v = (v ^ (v - 1)) >> 1; for (c = 0; v; c++) { v >>= 1; }}else{ c = CHAR_BIT * sizeof(v);}原理比较简单,下面提供一段C测试代码,根据代码显示的结果不难理解算法:#include#include#includevoid tranlate(long 阅读全文
posted @ 2013-06-27 00:11 xueda120 阅读(949) 评论(0) 推荐(0) 编辑

2013年6月26日

摘要: 本篇文章介绍一个整数的以10为底的对数的整数部分,即对于整数N,求log10(N)整数部分方法一 :unsigned int v; //32位非0整数 int r; // r保存结果int t; //临时变量static unsigned int const PowersOf10[] = {1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000};t = (IntegerLogBase2(v) + 1) * 1233 >> 12; //使用之前介绍过的... 阅读全文
posted @ 2013-06-26 08:57 xueda120 阅读(744) 评论(0) 推荐(0) 编辑

2013年6月25日

摘要: 本篇文章主要讲述几种反转比特位的方法:将一个32位数:abcd efgh 转置为hgfe dcba1、常规方法unsigned int v; // 目标待转置数unsigned int r = v; //r保存反转后的结果,开始获取v的最低有效位int s = sizeof(v) * CHAR_BIT - 1; // 剩余需要移位的比特位for (v >>= 1; v; v >>= 1){ r > 8) & 0xff] > 16) & 0xff] > 24) & 0xff]);原理:通过嵌套宏定义构造一张表,BitReverse 阅读全文
posted @ 2013-06-25 22:22 xueda120 阅读(5582) 评论(0) 推荐(0) 编辑

2013年6月21日

摘要: 本文主要介绍一系列算法,算法主要功能是判断一个数字(二进制)中是否包含全零字节e.g.1010 1111 0000 0000 1001 1111 0001 1111即 32位整数:A4A3A2A1中Ai =0(i=1 or 2 or 3 or 4)// 较少操作算法版本:unsigned int v; // 32位整型目标整数判断是否包含全0字节bool hasZeroByte = ~((((v & 0x7F7F7F7F) + 0x7F7F7F7F) | v) | 0x7F7F7F7F);原理:0x7F7F7F7F=0111 1111 0111 1111 0111 1111 0111 阅读全文
posted @ 2013-06-21 13:54 xueda120 阅读(1003) 评论(0) 推荐(0) 编辑

2013年6月17日

摘要: 位操作允许程序员对单独的位进行操作,例如,早某些机器上,短整型占16位,位操作将每一位单独操作。位操作允许程序员设置、清除、测试与其他的操作,这些操作如下表:操作含义&按位与|按位或^按位异或~取反<<左移>>右移这些操作用于整型或者字符型1、按位与(&)Bit1Bit2Bit1 & Bit2000010100111通常我们可把按位“与”操作 & 作为关闭某位(即将该位置0)的手段,例如我们想要关闭a数中的第3位,而又不影响其它位的现状,可以用一个数0xF7,即二进制数1111 0111去与a数作按位“与”运算: 0x88 1000 10 阅读全文
posted @ 2013-06-17 16:36 xueda120 阅读(312) 评论(0) 推荐(0) 编辑

摘要: 优先级运算符名称或含义使用形式结合方向说明1[]数组下标数组名[常量表达式]左到右()圆括号(表达式)/函数名(形参表).成员选择(对象)对象.成员名->成员选择(指针)对象指针->成员名2-负号运算符-表达式右到左单目运算符(类型)强制类型转换(数据类型)表达式++自增运算符++变量名/变量名++单目运算符--自减运算符--变量名/变量名--单目运算符*取值运算符*指针变量单目运算符&取地址运算符&变量名单目运算符!逻辑非运算符!表达式单目运算符~按位取反运算符~表达式单目运算符sizeof长度运算符sizeof(表达式)3/除表达式/表达式左到右双目运算符*乘表 阅读全文
posted @ 2013-06-17 13:33 xueda120 阅读(549) 评论(0) 推荐(0) 编辑

2013年6月13日

摘要: unsigned int a; // value to merge in non-masked bitsunsigned int b; // value to merge in masked bitsunsigned int mask; //if mask=1,结果数据从b中选择,else 从a中选择unsigned int r; //结果r= (a & ~mask) | (b & mask)r = a ^ ((a ^ b) & mask); C测试代码: 1 #include<stdio.h> 2 #include<string.h> 3 4 阅读全文
posted @ 2013-06-13 17:06 xueda120 阅读(253) 评论(0) 推荐(0) 编辑

2013年6月12日

摘要: 不使用选择分支语句按条件设置、清除比特位:bool f; // 条件标识符 flagunsigned int m; // 比特掩码unsigned int w; // 需要设置的数字: if (f) w |= m; else w &= ~m; w ^= (-f ^ w) & m;//或者,对于超标量cpuw = (w & ~m) | (-f & m);C测试代码如下: 1 #include<stdio.h> 2 #include<string.h> 3 4 int main() 5 { 6 bool f; //条件标志 7 u... 阅读全文
posted @ 2013-06-12 23:31 xueda120 阅读(332) 评论(0) 推荐(0) 编辑

2013年6月10日

摘要: #progma是一个C语言中的预处理指令,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。其格式一般为: #pragma Para 其中Para 为参数,下面来看一些常用的参数。(1)message 参数。 Message 参数是我最喜欢的一个参数,它能够在编译信息输出窗口中输出相应的信息,这对于源代码信息的控制是非常重要的。其使用方法为:#Pragma message(“消息文本”)当编译器遇到这条指令时就在编译输出窗口中将消息文本打印出来。当我们在程序中定义了许多宏来控制源代码版本的时候,我们自己有可能都. 阅读全文
posted @ 2013-06-10 23:10 xueda120 阅读(545) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 ··· 8 下一页