摘要:
有个讨论帖比较精彩:http://www.chinaunix.net/jh/23/422544.html实现代码:#include <stdio.h>int max(int x,int y){ int buf[2]={x,y}; unsigned int z; z=x-y; printf("z=x-y=%u\n",z); z>>=31; printf("z>>=31=%u\n",z); //int z1; //z1 = x - y; //printf("z1=x-y=%u\n",z); //z1&g 阅读全文
摘要:
假设两个数x和y,则有:方法1,算术运算(加减):x=x+y; //x暂存两数之和y=x-y; //y为两数之和减去y,即原来的xx=x-y; //x为两数之和减去现在的y(原来的x),变成原来的y方法2,逻辑运算(异或):x^=y; //x先存x和y两者的信息y^=x; //保持x不变,利用x异或反转y的原始值使其等于x的原始值x^=y; //保持y不变,利用x异或反转y的原始值使其等于y的原始值关于异或运算要牢记两个原则:任何一位二进制数同 1 异或都会变成另外一个(0 同 1 异或的结果是 1,1 同 1 异或的结果是 0)任何一位二进制数同 0 异或都保持不变(0 同 0 异或的... 阅读全文
摘要:
一、死锁 操作系统中有若干进程并发执行,它们不断申请、使用、释放系统资源,虽然系统的进程协调、通信机制会对它们进行控制,但也可能出现若干进程都相互等待对方释放资源才能继续运行,否则就阻塞的情况。此时,若不借助外界因素,谁也不能释放资源,谁也不能解除阻塞状态。根据这样的情况,操作系统中的死锁被定义为系统中两个或者多个进程无限期地等待永远不会发生的条件,系统处于停滞状态,这就是死锁。产生死锁的原因主要是:(1) 因为系统资源不足。(2) 进程运行推进的顺序不合适。(3) 资源分配不当等。 如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁.. 阅读全文