使用位操作计算一个数乘以10-C

上面是一般的计算方式,下面使用位操作。

生成正态分布随机数-C语言

正态分布或高斯分布是常用的概率分布,参看wikipedia正态分布

生成正态分布随机数的方法很多,我选择使用Marsaglia and Bray方法。

C代码:

使用Python numpy生成正态分布随机数:

生成正态分布随机数-C语言

mu是位置参数,决定了分布的位置;标准差sigma等于尺度参数,决定了分布的幅度。

你所不知道的switch语句-C语言

C语言中的switch语句通常用在分支条件过多的情况下,它可以替代if 语句,避免代码复杂化并提高执行效率。但是,这个switch语句还有阴暗面,使用这货可以写出非常难懂的代码,以至于需要查看生成的汇编代码来理解代码功能。

你可能看过”怎么写不可维护的代码”:https://github.com/Droogans/unmaintainable-code,呵呵。 继续阅读你所不知道的switch语句-C语言

编写第一个Linux内核模块: Hello World

要想扩展Linux内核的功能,可通过如下两种方法:

  1. 直接修改Linux内核源码,然后自行编译Linux内核源码
  2. 编写Linux内核模块

内核模块的开发效率更高,而且可以在内核运行时动态加载。由于Linux内核模块是动态加载,所以它也叫可加载内核模块,洋文LKM(Loadable Kernel Module)。Linux内核镜像位于/boot目录下,启动时最先加载,LKM总是在内核启动之后加载。

LKM主要用于:设备驱动、文件系统驱动和系统调用。 继续阅读编写第一个Linux内核模块: Hello World

跳跃查找算法-C

跳跃查找是在有序数组中用到的一种搜索算法,就像二分查找,当然二分查找用的更频繁。跳跃查找的洋文:Jump Search/Block Search,参考Wiki

跳跃查找算法和线性查找类似,只是它以一个固定的步长跳跃搜索。如下图

跳跃查找算法
在有序数组中查找55

继续阅读跳跃查找算法-C

tinyrenderer: 理解OpenGL的工作原理

tinyrenderer是Github上的一个开源项目,包含一系列帮助读者理解OpenGL原理的教程。作者使用简短的C++代码实现各种3D绘制算法。

项目地址:

章节:

  1. Bresenham画线算法
  2. 三角形光栅化和背面剔除
  3. 去除隐藏面
  4. 透视投影
  5. 相机移动
  6. 软件着色器
  7. 切线空间和法线映射
  8. 阴影贴图
  9. 环境光遮蔽
  10. GLSL

Ubuntu 安装使用 Racket(DrRacket)

Racket,原名PLT Scheme[1]  ,是一种计算机程序设计语言,在Lisp和Scheme基础上增加了对象、类型、惰性求值等,也是一个程序设计环境,可以让人们设计自己的程序语言。同时自带丰富的第三方库,如web服务、xml、数据库、GUI、图像处理等常用库。

DrRacket是Racket的图形编程环境。

继续阅读Ubuntu 安装使用 Racket(DrRacket)