【C】移位操作 处理乘法
今天在douban上面看到了一个帖子,里面关于乘法问题大家讨论了一下
http://www.douban.com/group/topic/8384097/
看到移位做乘法也不是第一次了,但是很诧异真的会在用,自己水平还就差了那么一点点,无可否认,我们处理器的ALU做移位是相当高效的。
这里记录一下里面的一个移位乘法例子。
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main ()
{
unsigned long int sum=0;
unsigned int a=0x49d;
unsigned int b=0xd;
unsigned int c=0x1;
unsigned int test;
printf("%d * %d", a, b);
for(c = 1; c; c<<=1, a<<=1)
if (test = b&c) sum += a;
printf("= %d.\n",sum);
system("pause");
return 0;
}
实现了1181 * 13
相关文档:
这篇文章是使用SQLite C/C++接口的一个概要介绍和入门指南。
由于早期的SQLite只支持5个C/C++接口,因而非常容易学习和使用,但是随着SQLite功能的增强,新的C/C++接口不断的增加进来,到现在有超过150个不同的API接口。这往往使初学者望而却步。幸运的是,大多数SQLite中的C/C++接口是专用的,因而很少被使用到。尽管有这 ......
通用函数库在头文件stdlib.h中声明,比较庞大,主要分为以下几大类:存储分配、随机数生成、数字转换与整型运算、程序退出与环境通信、搜索与排序、多字节与宽字符的转换。由于汲及到存储分配、环境通信等,因此它们的大多数也依赖于操作系统。glibc中,通用函数库的核心实现在stdlib和malloc两个目录下 ......
函数 - 声明、定义、调用
1. 如果函数没有声明, 应该在调用前定义:
#include <stdio.h>
/* 定义求大值函数 */
int MAX(int x, int y) {
if (x > y)
return x;
else
return y;
}
/* 定义求小值函数 */
int MIN(int x, int y) {
return x &l ......
/加了下面两个头文件,是为了在Win32工程中使用MFC的特性!
#include <afx.h>
#include <afxwin.h>
#include "stdio.h"
#include "conio.h"
////加了下面两句,是为了能够用string(basic_string类型)
#include <string>
using namespace std;
int main(int argc, char* argv[ ......