C - 二进制和十六进制表示之间的快速转换

标签 c math bit-manipulation representation

阅读或编写 C 代码时,我经常难以将数字从二进制转换为十六进制表示并返回。通常,像 0xAAAA5555 这样的不同掩码在低级编程中经常使用,但很难识别它们所代表的特殊位模式。有没有什么简单易记的规则,如何在脑海中快速完成?

最佳答案

每个十六进制数字正好映射到 4 位上,我通常会记住这些位中的每一位的 8421 权重,因此即使是在脑海中进行转换也很容易,即

A = 10 = 8+2 = 1010 ... 5 = 4+1 = 0101

只需记住 8-4-2-1 权重即可。

A        5     
8+4+2+1  8+4+2+1
1 0 1 0  0 1 0 1

关于C - 二进制和十六进制表示之间的快速转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9280733/

相关文章:

C - 结构和列表

c++ - ISO C++ 禁止在 Arduino c 串行通信中比较指针和整数 [-fpermissive] 错误

c - 与 C 中多个值的单行比较

c - 从一个数组中获取子数组

java - 如何使数字具有相同的长度,即使它们具有不同的值

arrays - 按螺旋顺序打印二维数组

java - 如何在java中进行按位排列

binary - BC中的按位运算?

x86 - 使用 SIMD 提取位

algorithm - 从路径内部选择点的最有效方法是什么