请教c/c++中的“与、或、异或”移位都能实现什么功能,具体执行的操作小弟我是明白,就是不知道在实际编程的时候,能实现什么功能,就像下面的程序,哪位高手能帮小弟我注释一下

请问c/c++中的“与、或、异或”移位都能实现什么功能,具体执行的操作我是明白,就是不知道在实际编程的时候,能实现什么功能,就像下面的程序,谁能帮我注释一下
请问c/c++中的“与、或、异或”移位都能实现什么功能,具体执行的操作我是明白,就是不知道在实际编程的时候,能实现什么功能,就像下面的程序,谁能帮我注释一下

void WINAPI Asc2Byte(void* ascptrc, BYTE *byteptr)
{
char* ascptr = (char*)ascptrc;
BYTE tmp[2] ;

if (*(ascptr) > '9')
{
if (*(ascptr) < 'a')
tmp[0] = ((((BYTE)(*(ascptr))) - 0x37) << 4);
else tmp[0] = ((((BYTE)(*(ascptr))) - 0x57) << 4);
}
else tmp[0] = ((((BYTE)(*(ascptr))) - '0') << 4);
ascptr++;

if (*(ascptr) > '9')
{
if (*(ascptr) < 'a')
tmp[1] = (((BYTE)(*(ascptr))) - 0x37);
else tmp[1] = (((BYTE)(*(ascptr))) - 0x57);
}
else tmp[1] = (((BYTE)(*(ascptr))) - '0');
ascptr++;

*byteptr = tmp[0] | tmp[1]; 
}

------解决方案--------------------
等待高手解答
------解决方案--------------------
...我只能说 机器语言LZ知道吧 计算只认识0和1,位操作就是直接进行0和1的运算,可以说是最底层的了,
速度那不用说。你可以做个测试,看看时间哪个用的多。
弄两个个循环分别1W次,n>>2和n除2,你看时间那个快....
------解决方案--------------------
这些都是解释给机器的
------解决方案--------------------
举个移位列子 

2的3次方

你按乘法算 实际就是按加法算 10+10+10+10 =1000

这样要运算3次

但是用位移的话 直接左移3位 10--》1000

运算1次

快很多