【发布时间】:2010-02-04 21:33:37
【问题描述】:
这是我之前回答的问题的后续问题:
Reading characters on a bit level
我似乎遇到的问题是了解 C 中位操作的基本概念。我了解需要做什么,但实际上开发解决方案时遇到了麻烦。
一个例子:
使用逻辑运算符将 01101010 更改为 00111110。
我了解实现解决方案的原理和掩码需求,但我不了解如何以编程方式进行。
我来自 C# 基础,最近才开始使用 C 进行开发。
谁能给我一些指导或提示来完成这个例子?
以下是解决方案,以防其他人发现它有用:
#include <stdio.h>
#include <stdlib.h>
#include <limits.h.>
int main()
{
//01101010 - 106 Decimal
char a = 0x6A;
//01010100 - 84 Decimal
char b = 0x54;
//00111110 - Uses exclusive or (XOR)
char c = a ^ b;
//Prints out in Hex - 62 Decimal
printf("%x",c);
return 0;
}
【问题讨论】:
-
我在使用 C# 时从来不需要降到这么低的水平,不过很高兴知道。
-
您希望最近编辑的输出是什么?
-
不要将值打印为字符,而是显示文本。您不能直接从 C 中以二进制形式打印,但十六进制可能会有所帮助(从十六进制转换为二进制比从十进制转换更容易)。使用 printf("%x", c);以十六进制打印。
-
@unwind:太好了,我添加了我的解决方案,结果是 3e 为十六进制,转换为十进制是 62。谢谢你的提示。
标签: c bit-manipulation