求阶乘与乘法分析
来源:互联网 发布:淘宝网男士风衣 编辑:程序博客网 时间:2024/05/29 09:51
#include <stdio.h>#include <math.h>long max(int a); void ConvetToBinary(int v);void main(){int m,n;int max_value;int size_of_long=sizeof(long);int flag=1;max_value=pow(2.0,size_of_long*8-1)-1;printf("max_value = %d (0X %08X) ",max_value,max_value);printf("sizeof(long)=%d\n",size_of_long);for(m=0;m<=30;m++){n=max(m);if(n<=max_value&&(n>>31==0)&&flag){printf("%2d的阶层为 %11d (0X %08X) Right ",m,n,n);ConvetToBinary(n);}else{flag=0;printf("------------------------------------------------\n");printf("%2d的阶层为 %11d (0X %08X) Wrong ",m,n,n);ConvetToBinary(n);}}}long max(int a){if(a==0) return 1;else return a*max(a-1);}void ConvetToBinary(int v){ int nBits; int i; nBits=sizeof(int)<<3; for(i=nBits-1;i>=0;i--) { printf("%d",(v>>i)&1);}printf("\n");}
x*17=x*16+x 即x左移4位再与x相加
01110111011101011000000000000000 |<-- 16的阶乘为x
01110111010110000000000000000000 |<-- 左移4位(x<<4)
11101110110011011000000000000000 |<-- +x 补码
转换为10进制(负数的补码等于其绝对值的原码各位取反再加1):
11101110110011010111111111111111 |<-- -1
00010001001100101000000000000000 |<-- 取反(~)
即288522240(十进制) 添上符号 即-288522240
- 求阶乘与乘法分析
- 大整数乘法 求阶乘
- 【C语言】求阶乘与阶乘之和
- 大整数的乘法与阶乘运算
- 循环与递归求阶乘
- 阶梯乘法——阶乘与梯乘
- 用递归求阶乘与斐波纳契数列
- 求阶乘
- 求阶乘
- 求阶乘
- 求阶乘
- 求阶乘
- 求阶乘
- 求阶乘
- 求阶乘
- 求阶乘
- 求阶乘:
- 求阶乘
- 【SQL】使用ROW_NUMBER() OVER 实现DISTINCT功能
- PivotGridControl控件应用
- android 3.0以上对usb设备的访问USB
- 读取并解析一个文本文件处理流程:编码、InputStreamReader、BufferedReader
- cocos2d-x ——用精灵文件创建一个动画
- 求阶乘与乘法分析
- cocos2d-x——用精灵帧创建动画
- @维诚软件
- error C2440: “类型转换”: 无法从“unsigned char”转换为“CString”
- Opponent Color Spaces
- Oracle数据库性能优化技术
- 从脚本中导入的存储过程脚本,注释没有了
- BI总结-BIEE11G-RPD建模
- 函数参数的存放位置差别