小编Mar*_*son的帖子

试图将二进制补码16位读入带符号的十进制数

我尝试(在PHP中)读取两个字节(16位)的二进制补码值并返回一个带符号的十进制数.

我不确定这两个恭维数学应该如何工作,但是从php.net,我设法得到它几乎显示我的期望.我认为我遇到的问题是我没有得到任何负面价值.

我有以下代码:

function _bin16dec($bin) {
    // Function to convert 16bit binary numbers to integers using two's complement
    $num = bindec($bin);
    if($num > 0xFFFF) { return false; }
    if($num >= 0x8000) {
        return -(($num ^ 0xFFFF)+1);
    } else {
        return $num;
    }
}
Run Code Online (Sandbox Code Playgroud)

这段代码是有人在网上提出的,但它在python中不明白.

def twoscomp( x ) :
   "This returns a 16-bit signed number (two's complement)"
   if (0x8000 & x): 
   x = - (0x010000 - x)
return x
Run Code Online (Sandbox Code Playgroud)

应用程序从陀螺仪中为2的补码形式中的每个轴读取两个字节.

提前致谢!

山姆

php python math binary

3
推荐指数
1
解决办法
3228
查看次数

平面上四个点的相对位置

平面中四个点有两个不同的相对位置:

点数

在位置1,这四个点可以形成一个凸四边形(即它们的凸包),在位置2,它们不能(在一个凸包中是一个三角形)。我的问题是:我该如何编写算法来找出这些点是在位置1还是位置2?(我知道所有四个点的坐标)。

algorithm geometry graph

3
推荐指数
1
解决办法
339
查看次数

Python中的舍入

round(1.4 999 999 999 999 999)(不带空格)四舍五入为 2,但 round(1.4 99 999 999 999 999)(不带空格)四舍五入为 1。

我想这与不精确的浮点表示有关,但无法理解第一个表示如何解释为更接近 2 而不是 1。

floating-point rounding python-3.x

3
推荐指数
1
解决办法
287
查看次数

使用Python编写指数移动平均值

我想对数据帧的三列进行计算df.为了做到这一点,我想在三列表中运行资产(加密货币)列表的价格,以便在有足够的数据后计算它们的指数移动平均值.

def calculateAllEMA(self,values_array):
    df = pd.DataFrame(values_array, columns=['BTC', 'ETH', 'DASH'])
    column_by_search = ["BTC", "ETH", "DASH"]
    print(df)
    for i,column in enumerate(column_by_search):
        ema=[]
        # over and over for each day that follows day 23 to get the full range of EMA
        for j in range(0, len(column)-24):
            # Add the closing prices for the first 22 days together and divide them by 22.
            EMA_yesterday = column.iloc[1+j:22+j].mean()
            k = float(2)/(22+1)
            # getting the first EMA day by taking the following day’s (day 23) …
Run Code Online (Sandbox Code Playgroud)

python math finance python-3.x pandas

3
推荐指数
2
解决办法
6117
查看次数

Python3:计算两个列表总和为100的所有排列的最有效方法是什么?

想象一下,我们有一个股票清单:

stocks = ['AAPL','GOOGL','IBM']
Run Code Online (Sandbox Code Playgroud)

具体的股票并不重要,重要的是我们在这个清单中有n个项目.

想象一下,我们还有一个权重列表,从0%到100%:

weights = list(range(101))
Run Code Online (Sandbox Code Playgroud)

给定n = 3(或任何其他数字),我需要生成一个矩阵,其中每个可能的权重组合总和达到100%.例如

0%, 0%, 100%
1%, 0%, 99%
0%, 1%, 99%
etc...
Run Code Online (Sandbox Code Playgroud)

是否有一些itertools的方法可以做到这一点?什么东西在numpy?最有效的方法是什么?

python numpy combinatorics python-itertools

3
推荐指数
1
解决办法
144
查看次数

Matlab中的运算符不是奇怪的

在我的代码中,我需要检查向量的两个连续成员之间的差异对是否相等,然后相应地做一些事情.现在这里有一个奇怪的事情发生在Matlab上说如果我有两对连续两个数字,所以当我使用时

(x(i+3) - x(i+2)) ~= (x(i+1)-x(i)) 
Run Code Online (Sandbox Code Playgroud)

1即使双方都是平等的,它也会给我一个机会.我认为原因是有一些圆整错误但不太确定.例如,

x = [0,0.16,0.32,0.48,0.64,0.80];
>>a = x(5) - x(4)

a =

 0.1600

>>b = x(4) - x(3)

b =

 0.1600

>>a-b

ans =

5.5511e-17
Run Code Online (Sandbox Code Playgroud)

知道怎么摆脱这个问题吗?有没有什么不同的策略绕过~===经营本IND的问题?

先谢谢你们.

math floating-point matlab

2
推荐指数
1
解决办法
80
查看次数

在c#中舍入中点舍入选项

虽然我已经看到了关于四舍五入的几个问题,但我还没有找到答案.在C#/ .Net中有没有办法进行中点舍入?也就是说,如果小数位于2个整数之间,我想总是向上舍入.据我所知,这是一种常见的舍入方法,所以我很惊讶它没有列在标准的Math.Round选项中.

87.3 -> 87
87.8 -> 88
87.5 -> 88
-87.3 -> -87
-87.8 -> -88
-87.5 -> -87
Run Code Online (Sandbox Code Playgroud)

我能找到的最接近的是MidpointRounding.AwayFromZero,但这会错误地处理负片,因为它们会向下舍入而不是向上.

.net c# math rounding

2
推荐指数
1
解决办法
1414
查看次数

P中的素数 - 跑到sqrt怎么样?

我正在学习PNP.
我已经读过,确定给定数字是否为素数的问题是P中的一个问题,这意味着它有一个多项式时间算法来解决它.
我还读到这个事实在2002年被证明是AKS的算法.

众所周知,我们可以通过运行直到其平方根来确定特定数字是否为素数.

伪代码:

isPrime(N):

sqrt(N) <- squareRoot(N)

for i from 2 to Sqrt(N)
    if (n mod i == 0)
        return false
return true
Run Code Online (Sandbox Code Playgroud)

我的问题很简单:
为什么上面的算法不能证明这个问题在P?
谢谢 :)

algorithm math primes computer-science p-np

2
推荐指数
1
解决办法
172
查看次数

Python - 5位随机数发生器,没有重复数字

我应该打印一个没有重复数字的随机5位数字,然后询问用户三位数字.如果用户的号码包含随机数的三位数字,则打印"正确".

我正在使用此代码作为随机数

num = random.randint (0,99999)
print (num)
Run Code Online (Sandbox Code Playgroud)

问题是它不会总是打印五位数字.

另外,我不知道如何将用户号码与随机数匹配.

谢谢.

python random

2
推荐指数
1
解决办法
2638
查看次数

Python **kwargs 中的 KeyError

只有第一个打印命令有效。我不明白为什么。我想根据传入的内容显示不同的前缀和后缀。

# We are going to have a word and a prefix or a suffix before or after
# that word

def joinWords(string, **sFox):
    if sFox['prefix']: 
        return sFox['prefix'] + string
    elif sFox['suffix']: 
        return string + sFox['suffix']
    return string




#Why does this work?
#print(joinWords("Cookie", prefix="sugar"))

#And this does not?
#print(joinWords("Cookie", suffix="monster"))
Run Code Online (Sandbox Code Playgroud)

python python-3.x

2
推荐指数
1
解决办法
6732
查看次数