首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我是否可以使用迭代8次的for循环将位转换为最初为0的整数,以获得Java中的8位数字?

我是否可以使用迭代8次的for循环将位转换为最初为0的整数,以获得Java中的8位数字?
EN

Stack Overflow用户
提问于 2014-12-16 20:25:27
回答 3查看 164关注 0票数 0

我正在实现一个用Java代码抽象的8位加法器。该8位加法器由8全加法器电路构成.对于那些不知道全加器是什么的人来说,这是一个计算2位和的电路。

我的意图是使用一个for循环来添加每个加法器2,8位输入的对应位,以便每次for循环迭代时计算8位结果的一个新位。

是否可以使用位移位将每次迭代的新计算位存储在保存8位结果的变量中?

这里有一个例子来帮助解释我在问什么。粗体位将被移到保存结果的int中。

0b00001010

+

0b00001011

第一次迭代(添加开始于w/ LSB)

总数:1 结果: 0b00000001 携带:0

二次迭代

总数:0 结果:0b 0000001 携带:1

第三次迭代

总数:1 结果: 0b00000101 携带:0

四次迭代

总数:0 结果: 0b0000101 携带:1

第五次迭代

总数:1 结果: 0b00010101 携带:0

第六次、第七次、第七次迭代

和:分别为0、0、0 结果: 0b00010101 进位: 0,0,0

EN

回答 3

Stack Overflow用户

发布于 2014-12-16 20:29:46

java中的移位操作符有:>>><<>>

代码语言:javascript
运行
复制
System.out.println(1 << 1); // print 2
System.out.println(1 << 2); // print 4

你不能用换挡从稀薄的空气中插入1。要插入1,请尝试按位运算符:、分部、&

票数 1
EN

Stack Overflow用户

发布于 2014-12-16 20:42:33

如果您想得到确切的序列,可以使用以下操作来完成:

代码语言:javascript
运行
复制
n = (n<<1 | (1&~n));

n=0开始,给出了0b000000010b000000100b000001010b00001010等。

票数 1
EN

Stack Overflow用户

发布于 2014-12-16 20:42:48

refred已经提到了轮班操作。在创建位掩码时,shift操作尤其有用(因此,假设设置了整数的1位,或者应该设置位字段中的连续位数时)。

请记住,a = a << 1等于

分别为a = a*2a*=2

在解剖学上,a = a >> 2等于

代码语言:javascript
运行
复制
a = a/2 or a/= 2

现在,每当您没有应该设置的连续位数时,您就必须使用二进制操作,例如&和\\。因此,由于您无论如何都需要二进制操作,所以在每种情况下使用shift操作都没有多大意义,因为您可以简单地写下十六进制值。但这是有可能的。我做了几个步骤来说明这一点:

代码语言:javascript
运行
复制
int a = 1;  //0b00000001
a <<= 2     //0b00000100
a |= 1      //0b00000101
a <<= 1     //0b00001010
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27513288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档