单片机程序中数组中的值怎么实现位左(右)移?(C语言)

我的目的是通过每 位左移或者右移 一次就把数据通过I²C发送给12864显示屏形成流动显示
不知道有没有更好的办法,我自己想出来的。也不知道可不可行。
这是源程序文件中要用到的数组
128行,8列,1024个数值

// Bitmap点阵数据表 /
/ 图片: F:\..o字模\516.bmp,纵向取模下高位,数据排列:从左到右从上到下
// 图片尺寸: 128 * 64
unsigned char code nBitmapDot[] = // 数据表
{
0xFF,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
......... .......... //(此处省略122行*8列十六进制数)

}
给点建议吧,谢谢了

data = nBitmapDot[i] >> 1; // nBitmap[i]右移一个二进制位,与 data = nBitmapDot[i] / 2; 同效。
data = nBitmapDot[i] << 1; // nBitmap[i]左移一个二进制位,与 data = nBitmapDot[i] * 2; 同效。
要说明的是移位操作(<< 或 >>)效率更高。
温馨提示:答案为网友推荐,仅供参考