code for fun

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

2013年5月9日

摘要: 描述求2个数中较大者。 输入第一行为测试的数据组数N,接下来的N行分别是两个待比较的整数输出输出N行,每一行的值为每组数中较大的整数样例输入21 215 10样例输出215#include<iostream.h>using namespace std;int main(){ int N,a,b; cin>>N; while(N--) { cin>>a>>b; if(a>b) cout<<a; else cout<<b; cout<<endl; ... 阅读全文
posted @ 2013-05-09 01:05 xueda120 阅读(915) 评论(0) 推荐(0) 编辑

摘要: 描述求两个整数之和。输入输入数据只包括两个整数A和B。输出两个整数的和。样例输入1 2样例输出3#include <stdio.h> int main() { int a,b; scanf("%d %d",&a, &b); printf("%d\n",a+b); return 0; } 阅读全文
posted @ 2013-05-09 01:03 xueda120 阅读(176) 评论(0) 推荐(0) 编辑

2013年5月5日

摘要: 可变位宽的符号扩展: 有时,我们需要扩展数字的符号位,但是我们不知道该数字的总位数,如果用b表示(或者我们可能会使用类似于java这样缺乏位域的语言编程)unsigned b; // 表示数x的位数int x; //将这个b位数符号扩展到r位int r; // 保存r位数字int const m = 1U << (b - 1); // 如果b固定,中间量可以提前计算x = x & ((1U << b) - 1); // (Skip this if bi... 阅读全文
posted @ 2013-05-05 13:51 xueda120 阅读(561) 评论(0) 推荐(0) 编辑

2013年5月4日

摘要: 计算机的内嵌类型进行自动的符号扩展,比如char与int类型等等,但是也许你遇到一个有符号的二进制补码数x,并且使用仅仅b位,更进一步,也许你需要将x转化为整型,如果x为正数,一个简单的复制操作就可以搞定,但是如果为负数,符号位必须扩展。例如:假如我们仅仅用4位来存储一个数,于是-3用二进制就表示为1101,如果我们用8位,那么-3就表示为11111101.最值得注意的位是4位的相关数使用更多位数在左边进行填充,这被称为“符号扩展”,在C语言中,符号扩展对于固定长度的数很普通,因为位域可能是结构体或是联合体,例如:将5位数转换为全整型:int x; //待转换的数int r; //... 阅读全文
posted @ 2013-05-04 00:03 xueda120 阅读(450) 评论(0) 推荐(0) 编辑

2013年5月3日

摘要: unsigned int v; // 判断v是否为2的幂bool f; // f为判断的结果f = (v & (v - 1)) == 0; // 结果为0表示不是2 的幂// 改变表示方法,可以使用下面的方法:f = v && !(v & (v - 1)); 阅读全文
posted @ 2013-05-03 18:28 xueda120 阅读(251) 评论(0) 推荐(0) 编辑

摘要: 不用选择分支找出指定两整数中的最大值与最小值:int x; int y; // 找出x与y的最大值与最小值int r; // r保存结果r = y ^ ((x ^ y) & -(x < y)); // min(x, y)在一些很少的机器上,分支比较很耗资源,而且没有条件移动指令存在,以上的实现可能比传统的方法:r = (x < y) ? x : y要快。即使比后者多执行两步指令。(通常,前面的方法要快)它的工作原理如下:如果x<y,那么-(x-y)全部为1, 结果r= y ^ (x ^ y) & ~0 = y ^ x ^ y = x.否则,如果x>=y, 阅读全文
posted @ 2013-05-03 17:00 xueda120 阅读(332) 评论(0) 推荐(0) 编辑

2013年4月18日

摘要: 判断两整数是否异号:int x, y; //输入比较的两数bool f = ((x ^ y) < 0); // 返回真,当且仅当x与y异号说明:当x、y异号,x与y的最高位分别为0和1,取"^"后为1,结果为负数不用选择语句得到指定整数的绝对值:int v; // 需要得到整数v的绝对值unsigned int r; // r保存结果int const mask = v >> sizeof(int) * CHAR_BIT - 1;r = (v + mask) ^ mask; 变式:r = (v ^ mask) - mask; 阅读全文
posted @ 2013-04-18 01:52 xueda120 阅读(263) 评论(0) 推荐(0) 编辑

2013年4月14日

摘要: 关于衡量计算操作的方法: 当为算法统计操作的数量的时候,所有的C运算符被认为是一样的操作。中间过程不被写入随机存储器(RAM)而不被计算,当然,这种操作数的计算方法,只是作为那些接近机器指令和CPU运行时间的服务。所有的操作被假设成花相同的运行时间,事实上是不正确的。有很多不同的因素决定一个系统能多快运行一段样例代码,例如:缓存大小,内存带宽,指令集合等等……。最后,建立一套标准才是衡量一种方法快过另一种方法的最好方法。 判断一个整数的符号int v; // v为我们要判断的整数int sign; // 保存结果 sign = -(v < 0); // if v < 0 si... 阅读全文
posted @ 2013-04-14 18:38 xueda120 阅读(514) 评论(0) 推荐(0) 编辑

2011年5月10日

摘要: int**malloc2d(intr,intc){inti;int**t=malloc(r*sizeof(int*));for(i=0;i<r;i++)t[i]=malloc(c*sizeof(int));returnt;}int**a=malloc2d(M,N)ps:矩阵相乘for(i=0;i<N;i++)for(j=0;j<N;j++)for(k=0,c[i][j]=0.0;k<N;k++) c[i][j]+=a[i][k]*b[k][j]; 阅读全文
posted @ 2011-05-10 22:18 xueda120 阅读(178) 评论(0) 推荐(0) 编辑

2011年4月26日

摘要: #include<stdio.h>#include<stdlib.h>typedefstructnode*link;structnode{intitem;linknext;};intmain(){inti,N,M;scanf("%d%d",&N,&M);linkt=malloc(sizeof*t),x=t;t->item=1;t->next=t;for(i=2;i<=N;i++){x=(x->next=malloc(sizeof*x));x->item=i;x->next=t;}while(x!=x 阅读全文
posted @ 2011-04-26 15:46 xueda120 阅读(115) 评论(0) 推荐(0) 编辑

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