【问题标题】:store bits in an integer value in c [closed]将位存储在c中的整数值中[关闭]
【发布时间】:2013-07-18 18:28:38
【问题描述】:

考虑一个 8 位编译器,比如 Turbo C,其中我们有一个整数大小,比如 2 个字,即 16 位或 2 个字节。我需要存储三个整数值。

整数 1 | 0-3 | 2位(二进制00-11)

整数 2 | 0-5 | 3bits(二进制000-101)

Inetger 3 | 0-7 | 3位(000-111二进制)

总的来说,我们只需要 8 位来存储所有这三个值。这意味着整数数据类型的单个变量有足够的内存来容纳这些值。我需要 开发一个程序,该程序最多只能使用两个整数数据类型实例,第一个用于从标准输入设备(例如键盘)扫描值,第二个用于存储用户以三个整数形式输入的数据如上所述的变量,并通过从存储数据的第二个实例中检索它来打印它们。

【问题讨论】:

  • 欢迎来到 SO。如果您希望我们提供帮助,那么您需要向我们证明您尝试了某些东西。否则,这只会​​被否决并关闭。
  • 闻起来像作业(见和/或/不是运算符)
  • 这个问题是题外话,因为它是家庭作业。
  • @devnull 我不认为家庭作业是题外话。只要您先尝试并发布带有问题的代码,发布请求帮助的问题似乎是合理的。如果我错了,我将不胜感激任何指向常见问题解答等的链接,这些链接会阻止家庭作业问题。
  • @simonc OP 没有展示任何解决问题的尝试这一事实是隐含的。

标签: c


【解决方案1】:

使用位域:

union X{
  byte byteval;
  struct {
    byte piece1:3;
    byte piece2:3;
    byte piece3:2;
  } pieces;
};

那么你就有了透明的访问权限:

X a;
a.pieces.piece2=3;
a.byteval;

并且不必左右移动...将其留给编译器;)

【讨论】:

  • 不要做别人的功课,他们什么也学不会:P
  • 下次我会更加小心......但如果它是按位运算符的作业......那么我的答案是无用的;)
猜你喜欢
  • 2018-03-20
  • 1970-01-01
  • 1970-01-01
  • 2018-01-04
  • 1970-01-01
  • 2023-03-17
  • 2011-06-28
  • 1970-01-01
  • 2022-01-20
相关资源
最近更新 更多