C中的二进制操作

时间:2014-11-02 05:42:00

标签: c binary char

我有两个字符

char c1='A', c2 = 'B';

因为A的8位二进制为01000001,而B的二进制为01000010。我希望将B的最左位置于A的右侧最后一位,以便c1变为01000000。我这样做是通过计算二进制文件A和B,然后创建新的二进制文件,然后执行所描述的过程,然后将新的二进制文件分配给c1。 我的问题是,是否有任何有效的方法可以做到这一点?

2 个答案:

答案 0 :(得分:3)

c2的最左边位是:

c2 & 0x80

要将其移动到最右边的位,请使用右移:

(c2 & 0x80) >> 7

要将其与c1结合使用,首先必须清除最c1位:

(c1 & 0xfe)

然后将它们与|

组合在一起
c1 = (c1 & 0xfe) | ((c2 & 0x80) >> 7);

您还应将声明更改为unsigned char以避免符号位出现问题。使用按位运算时,通常最好只使用unsigned个变量。

答案 1 :(得分:-1)

你想要这个:

c1 = (c1 & 0xfe) | (c2 >> 7);