【发布时间】:2010-10-12 18:01:58
【问题描述】:
数据类型为char,模式如下:
源字节:[0][1][2][3][4][5][6][7]
目的地:[6][7][4][5][2][3][0][1]
例如,如果我将 char, 29 传递给此函数,它将执行交换并返回 char 类型的值,即 116。
如何进行交换?
谢谢。
==========================
只是想知道我是否可以这样做?
unsigned char mask = 128;
char num = 0, value1 = 29;
int i, a;
for(i = 0; i < 8; i++) {
if (i == 0 || i == 1 || i == 6 || i == 7)
a = 6;
else
a = 2;
if(i < 4)
num = ((value1 & mask) >> a);
else
num = ((value1 & mask) << a);
result = (result | num);
if(i<7)
mask = mask >> 1;
}
【问题讨论】:
-
嗯?你有一个旋转的 3 位值?但是在一个字符中? 8位?三不干净地分成八..
-
什么?他的例子是
29 = 00011101,他通过重新排列位将其转换为116 = 01110100 -
这是为了在进行就地 FFT/DFT 后更正地址吗?似曾相识……
-
噢……我以为他在做一个以 8 为底的操作,而不是一个字节的位旋转。
标签: c char bit-manipulation swap