程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> [C++基礎]位運算應用——創建guid

[C++基礎]位運算應用——創建guid

編輯:C++入門知識

[C++基礎]位運算應用——創建guid


/*
|(按位或):x|y=z(z>=x、y),想想x,y各個二進制位一一對齊,只有對應為上有1,就取1,最後就得到了x,y的更大值。"|"可以簡單認為是就獲取更大值的操作運算符
&(按位與):x|y=z(z<=x、y),想想x,y各個二進制位一一對齊,只有對應為上有0,就取0,最後就得到了x,y的更小值。"&"可以簡單認為是就獲取更小值的操作運算符
>>(按位右移):x|y=z,想想x的二進制位右移y位(不要有小數點的想法,以為是一對小數點呢,哎,之前它一直困擾我),也就是從x二進制位的末端抹去y個位
<<(按位左移):x|y=z,想想x的二進制位左移y位,也就是在x的二進制位的末尾增增加y個0。
*/

//RGB色彩合並
int ColorMerge(int r,int g,int b)
{
    //24位的rgb值=r占8位+g占8位+b占8位
    //在r的二進制位末尾增加16個0,在g的二進制位的末端增加8個0,最後,r、g、b的各個二進制位取1
    return r << 16 | g << 8 | b;
}
//RGB色彩分理
void ColorSeparate(int rgb)
{
    //24位的rgb值=r占8位+g占8位+b占8位
    int r = rgb >>16;//去掉末尾16個二進制位
    int g = rgb >>8 & 0xff;//0xff-->255-->由8個1組成的二進制位,去掉末尾8個二進制位後,
    int b = rgb & 0xff;
}
uint64 CreateObjID(int platfromid,int serverid,int curTime,int seed)
{ 
    // create guid
    //二進制位,seed(隨機種子)占16位,curTime(時間戳)占32位,serverid(服務器id)占8位,platfromid(平台id)隨機占8,總64位
    uint64 guid = ((platfromid)<<(8+32+16)) | ((serverid)<<(32 + 16)) | ((curTime)<<16) | ((seed)&0xffff);
    return guid;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved