oct*_*bus 3 c informix bit-manipulation 4gl meter
我的问题是在下面的例子中val = val >> 2;做了什么?那是我相信它是4分裂.
int val = 12345678;
val = val >> 2;
Run Code Online (Sandbox Code Playgroud)
这是这个问题的背景.
我有一个水表的读数,比如12345678.我们的水表工作的方式是两个右手数字被扔掉读取,所以123456真的是读.(有理由丢掉两个与水流如何使寄存器转动有关的右手数字.但这与我的问题无关.)
目前,我们采用12345678并将它除以100,使用4GL整数变量,所以我没有得到十进制数.我们正在进行截断,我们没有想到,我正在尝试确定位移是否会更好.
在将读取截断为123456之后,使用最后一次读取(也是截断的)计算增量,并从中生成消耗.
我在Informix 4GL中可以使用C,我相信删除最低两位数的最佳方法是向右移位2.我相信这是我将获得的唯一方法 - 例如 -
5 digit meter 12345 --> 123
6 " " 123456 --> 1234
7 " " 1234567 --> 12345
Run Code Online (Sandbox Code Playgroud)
谢谢你容忍一个简单的问题.我们试图找出一个问题,即端点 - 与仪表交谈 - 是如何编程的,以及数据实际上意味着什么来自端点.
das*_*ght 10
位移丢弃最后两位二进制数字,而不是十进制数字.它等于整数除以4.你需要除以100来抛弃最后两位小数.
101111000110000101001110 bin = 12345678 dec
101111000110000101001110 bin >> 2 dec = 1011110001100001010011 bin
1011110001100001010011 bin = 3086419 dec
| 归档时间: |
|
| 查看次数: |
323 次 |
| 最近记录: |