gpt4 book ai didi

c - 用类 C 的脚本语言实现位移运算符

转载 作者:太空宇宙 更新时间:2023-11-04 03:48:48 24 4
gpt4 key购买 nike

我可以使用一种在其上运行 C 风格脚本语言的仪器。它可以声明和使用 char 的变量或数组, intdouble但不是 float .它允许标准 C 逻辑和加法、减法、除法和乘法的操作数。它没有有用的功能,例如 sizeof()并且没有任何位移运算符 << , >> .

我正在尝试让它发送 double两个二进制输出端口的值。每个都可以设置为高或低。

我在想,我应该通过使用按位 AND 比较器对 double 值进行位移屏蔽来实现这一点。但是我不能这样做,因为位移运算符不存在。然后我会使用一个输出端口作为时钟,第二个作为同步数据线。

例如,使用值 = 6 (0000 0110) 的输入字节。数据将像下面这样输出,其中 X 表示“时钟”向下行程的读取值:

*Clock,  Input
* 0, 0
* 1, 0 X
* 0, 0
* 1, 1 X
* 0, 0
* 1, 1 X
* 0, 0
* 1, 0 X
* 0, 0
* 1, 0 X
* 0, 0
* 1, 0 X
* 0, 0
* 1, 0 X
* 0, 0
* 1, 0 X
* 0, 0

所以我需要一种逐位迭代 double 的方法(不确定仪器为其 double 使用了多少位)并将输出标志设置为它的值,但这不能用 bit 完成-shift 因为我没有。

最佳答案

移动一个值相当于乘以/除以二(使用整数数学):

 a / 2   equivalent to  a >> 1 
a * 2 equivalent to a << 1

您需要检查脚本语言是否进行整数运算(或使用 floor()int()trunc()或提供的任何语言)。

还要小心溢出,如果脚本语言使用 float 而不是整数来表示数字,您可能会预料到大数字会出现奇怪的行为。

关于签名的另一个警告。如果你必须处理负数,向左移动会更复杂。

你能运行几个测试来检查整数的大小吗?它一定会帮助您避免问题。

关于c - 用类 C 的脚本语言实现位移运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22329746/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com