位操作存取RGB颜色值的方法

分享一个位操作存取RGB颜色值的方法。

缘由

我需要在数据库里面存储rgb颜色,但是直接存字符串这样太low了,于是想办法 将rgb颜色经过位运算得到24位的int值,储存在mysql里面可以直接用medium int类型,很节省空间。(当然,c语言并没有24位类型,只有32位的无符号整数,在前面补8位0就ok啦,在我php中就不存在这个现象啦,哈哈)

RGB三种颜色混合成一个整型操作

R:255 24位二进制表示,0000 0000 0000 0000 1111 1111

G:255 24位二进制表示, 0000 0000 0000 0000 1111 1111

B:255 24位二进制表示, 0000 0000 0000 0000 1111 1111

将这rgb三个值经过位运算,(R<<16)|(G<<8)|B,结果如下

1111 1111 1111 1111 1111 1111

(更多…)

c语言的位操作

一、基本位操作

|

&

~

取反

^

异或

<<

左移

>>

右移

二、位操作的常见用法

1.获取某位的值

#define BitGet(Number,pos) ((Number)|= 1<<(pos)) //把某位置1
#define BitGet(Number,pos) ((Number) &= ~(1<<(pos)) //把某位置0
#define BitGet(Number,pos) ((Number) >> (pos)&1)) //用宏得到某数的某位
#define BitGet(Number,pos) ((Number) ^= 1<<(pos)) //把Number的POS位取反

(更多…)

你可能还喜欢下面这些文章

c语言中的define用法

作为代码中,第一个看到的,极有可能就是define这个东西,称为宏!(define是可以出现在任何地方的,但是我们一般把这个写到最开始)然而,很多时候,初学者有时候可能看不懂她,因此,我的c语言学习的第一篇就写这个啦。define基本用法,简单定义最浅显的,define能用一个有含义的字符来替代一些数字,比如#define PI 3.141592654这样,假如以后要计算圆的周长或者面积,就可以用PI这个字符而不用写3.141592654啦。比如#define PI 3.141592654#include "stdio.h"int main(){    int r = 3;    float

计算机语言学习指南

这篇文章讨论基于语言的基本要素,如何快速入门一种计算机语言。是一篇语言从学习到使用的指导手册,并且这种学习方式是一个系统的学习,相比于碎片化的学习,这种学习更加不容易遗忘。语言的基本成分语言的基本成分为数据、运算、控制、传输。想想你学过的语言,是不是都是这样。归结语言的组成成分,学习一门语言可以从这四个方面下手,这四个方面掌握之后,对这个语言就有个最基本的了解了。语言基本成分:数据数据是程序操作的对象。实际上我们可以思考,一个数据拥有的属性有哪些,根据我们已经掌握的语言来说(比如PHP)。$a = 1$a是数据,那么这个数据有哪些属性呢?名称(a),类型(int)。从这一行代码只能发现这两个属