- 博客(5)
- 资源 (14)
- 收藏
- 关注
原创 C语言中除以2的幂
在大多数机器上,除法要比乘法(乘法需要10个或更多时钟周期)更慢,需要30个或更多的时钟周期。除以2的幂可以用移位运算来实现,只需要一个时钟周期。无符号和补码数分别使用逻辑移位和算术移位来达到目的。整数除法总是舍入到零。对于使用算术右移的补码机器,C表达式:x / y = ( x > k。(其中,y = 2k )下面是x/16的C语言实现:/*习题2.42开发环境VC++6
2012-10-02 22:11:49 3399
原创 判断C语言中int 与 unsigned 乘法是否会溢出
在C语言中,int 与 unsigned 乘法被定义为产生w(w为机器字长)位的值。如果乘积超过w位,所产生乘积的高位将被舍弃。下面这段代码用来判断整数乘法会不会溢出:/*练习题2.36*//*开发环境VC++ 6.0*/#includevoid main(){ unsigned x = 4294967295; unsigned y = 8; unsigned mul
2012-10-02 10:09:12 6549
原创 判断两个整数相减会不会溢出
需要注意的是一个特殊情况:当减数是机器所能表示的最小负数时。/*练习题2.32开发环境VC++6.0*/#includeint taddOK(int, int);int tsubOK_Buggy(int x,int y);int tsubOK(int x,int y);void main(){ int x = 0; int y = -2147483648;//-
2012-10-01 16:22:42 4720 1
原创 判断两个整数相加会不会溢出
实际上,大多数电脑中,整数都是用补码来表示的。发生溢出不会报警,只是将最高位直接截断。/*习题2.30C语言开发环境VC++6.0*/#includeint taddOK(int, int);void main(){ int x, y; printf("Input two integers:\n"); scanf("%d %d",&x, &y); pri
2012-10-01 15:22:55 4394 3
原创 C语言中无符号数运算判断溢出
对于无符号加法运算,当执行C程序时,不会将溢出作为错误而发信号。例如要计算s = x + y;如果溢出则会得到结果s = (x + y) %2w或者s = x + y - 2w(w 是机器中无符号的最大二进制位数)。又因为x w且y w,所以可以用if(s
2012-10-01 10:16:43 8556
swt-3.7.2-win32-win32-x86
2012-07-11
MDG Link for Eclipse User Guide.pdf
2012-05-18
WpdPack_4_1_2
2011-11-13
DDoS攻击的研究
2011-11-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人