如何在C中进行数据对齐?

Mona Jalal |

我想知道为什么以下宏可用于C中的数据对齐吗?#define CMIALIGN(x,n) (size_t)((~(n-1))&((x)+(n-1)))假设n等于7,为什么下面的宏应该起作用?#define ALIGN8(x) (size_t)((~7)&((x)+7)您可以举一些例子来说明这个公式为什么起作用吗?还有其他用于数据对齐的切实可行的公式吗?

WhozCraig

的目的~N(其中N是大于你所寻求的对齐少一个),是确保所有的高序位已经存在于你的电话号码被正确地保持对齐后点燃,包括位被推有通过添加操作。对齐的实际舍入是通过添加来完成的。N这确保将任何适当的进位位压入较高位的位置,~N然后保证按位与之保留,同时确保扫除最低位,因为他们是不需要的。

想象一下:

   00100011 :  35
+  00000111 :   7
   --------   ----
   00101010 :  42
&  11111000 :  ~7
   ---------- ----
   00101000 :  40

另一个例子:

  11101111 : 239
+ 00000111 :   7
  --------   ----
  11110110 : 246
& 11111000 :  ~7
  --------   ----
  11110000 : 240

最后,由于已经对齐,该示例最终无济于事:

  10100000 : 160
+ 00000111 :   7
  --------   ----
  10100111 : 167
& 11111000 :  ~7
  --------   ----
  10100000 : 240

我应该注意,除了调用方检查零返回值(这显然不是您要用作向上舍入的对齐值)之外,这没有提供真正的防止溢出的保护。

  11111110 : 254
+ 00000111 :   7
  --------   ----
  00000101 :   5  (of)
& 11111000 :  ~7
  --------   ----
  00000000 :   0

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在WPF MVVM中进行数据绑定

来自分类Dev

如何在Scala中进行数据清理

来自分类Dev

如何在mysql中进行数据透视查询?

来自分类Dev

如何在BigQuery中进行数据分组?

来自分类Dev

如何在WPF MVVM中进行数据绑定

来自分类Dev

如何在mysql中进行数据透视查询?

来自分类Dev

如何在Scala中进行数据清理

来自分类Dev

如何在 Angular 4 中进行数据属性绑定?

来自分类Dev

如何在每个行数组中进行颜色更改C ++

来自分类Dev

如何在每个行数组中进行颜色更改C ++

来自分类Dev

如何在openpyxl中进行列对齐?

来自分类Dev

如何在textview / webview中进行左对齐和对齐

来自分类Dev

如何在Shiny-折线图R中进行数据集的反应函数

来自分类Dev

在C ++中进行内联汇编以进行数据转换

来自分类Dev

如何在数据驻留在多个oracle数据库中进行数据分析?

来自分类Dev

如何在js替换函数中进行数字运算?

来自分类Dev

Perl:如何在命令中进行数学运算?

来自分类Dev

如何在查询中进行数学运算?

来自分类Dev

如何在mysql中进行数学计算?

来自分类Dev

如何在Ruby中进行数值比较?

来自分类Dev

如何在 Django 模板中进行数学运算?

来自分类Dev

如何在R中进行数据操作之前和之后使用ggplot为ggarrange创建“持久”图

来自分类Dev

当我已经在 Django 中进行数据迁移时,如何在模型中添加新字段?

来自分类Dev

如何在C ++中进行惰性构造?

来自分类Dev

如何在C ++中进行哈希

来自分类Dev

如何在C ++中进行特殊排序?

来自分类Dev

如何在C ++中进行哈希处理

来自分类Dev

如何在C ++中进行调试

来自分类Dev

如何在C ++中进行分析

Related 相关文章

热门标签

归档