labview的公式节点中的移位有bug啊

2019-07-17 11:37发布

比如我写入 如下代码在公式节点uInt16 a1=0xABCD, a2 ,a3;a2=a1>>8;  //右移8位a3=a1<<8; //左移8位
把a2,a3输出显示,其结果是a2为AB,a3为FFFF,可以看到左移是错误的。不知道大家发现没有。
而在c语言中,就没有这个问题。


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
芒果冰
2019-07-17 14:33
按照题目所说做了两组试验:
A.所有变量使用Uint16来进行左、右位移的运算
B.所有变量使用Uint32来进行左、右位移的运算

采用uInt16则问题复现。而采用uInt32则计算结果正常。因此个人观点为:因为0xFFFF代表的是uInt16的最大值,所以是否为LabVIEW在处理左移超出数制范围时,默认其为无穷大或最大,因而采用0xFFFF表示。而不是单纯的抛弃左端,向右补“0”。
124335tjmv2k7q7k9tsv2v.jpg



124330rjaa6akagia6l6aj.jpg

一周热门 更多>