标题:c语言中数据运算和符号的问题((i0>>0&0x1)*2-1)
只看楼主
zzmx
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2020-2-4
结帖率:75%
已结贴  问题点数:10 回复次数:4 
c语言中数据运算和符号的问题((i0>>0&0x1)*2-1)
最近在学习前辈们写的数据分析程序,有几个地方看不懂。
这是其中的一行程序
xx[0]=2.0*(wire[0+off][i1]-4.25)+((i0>>0&0x1)*2-1)*drft[0];

我主要是((i0>>0&0x1)*2-1)看不懂是什么意思,或许这是某种运算的法则?
还请知道的人指点一下,谢谢!
搜索更多相关主题的帖子: 一行 数据 c语言 符号 运算 
2020-09-28 10:02
纯蓝之刃
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:76
帖 子:554
专家分:3690
注 册:2019-7-29
得分:5 
我也没看明白什么意思。((i0>>0&0x1)*2-1),首先i0>>0,i0右移0位,实际没改变,然后&0x1,取i0>>0后的数的最低位,然后运算后的值*2-1.实际上((i0>>0&0x1)*2-1)可以等价于(i0&0x01)。
我是这么认为的。不知道是否有其他含义。

一沙一世界,一花一天堂。无限掌中置,刹那成永恒。
2020-09-28 10:08
zzmx
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2020-2-4
得分:0 
回复 2楼 纯蓝之刃
你好,这一段的代码是这样的,i0是一个十进制数。它右移0位变成什么呢?
程序代码:
 for(Int_t i0=0;i0<16;i0++){
        xx[0]=2.0*(wire[0+off][i1]-4.25)+((i0>>0&0x1)*2-1)*drft[0];
        xx[1]=2.0*(wire[1+off][i2]-4.75)-((i0>>1&0x1)*2-1)*drft[1];
        xx[2]=2.0*(wire[2+off][i3]-4.25)+((i0>>2&0x1)*2-1)*drft[2];
        xx[3]=2.0*(wire[3+off][i4]-4.75)-((i0>>3&0x1)*2-1)*drft[3];}

这只是其中一小段代码,后面还有其他运算。
2020-09-28 10:14
nosnoy
Rank: 9Rank: 9Rank: 9
来 自:mcu
等 级:贵宾
威 望:14
帖 子:540
专家分:1158
注 册:2016-9-17
得分:5 
回复 3楼 zzmx
右移0位就是不变,无论你是啥进制,电脑的移位操作只限于2进制,因为你的任何数据在底层都是以二进制存储的。

穷举是最暴力的美学
2020-09-28 14:57
nosnoy
Rank: 9Rank: 9Rank: 9
来 自:mcu
等 级:贵宾
威 望:14
帖 子:540
专家分:1158
注 册:2016-9-17
得分:0 
回复 3楼 zzmx
   
    i0                 0    1    2    3    4    5    6    7    8    9      
    i0                0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09
    i0>>0             0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09
    i0>>1             0x00 0x00 0x01 0x01 0x02 0x02 0x03 0x03 0x04 0x04
    i0>>0&0x1         0x00 0x00 0x01 0x01 0x00 0x00 0x01 0x01 0x00 0x00
((i0>>0&0x1)*2-1)     -1    -1    1    1    -1  -1    1    1    -1  -1

穷举是最暴力的美学
2020-09-28 15:05



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-503297-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014647 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved