标签: complement

为什么C,C++,Java不使用一个补码?

我听说C,C++,Java使用两个补码进行二进制表示.为什么不使用1补充?使用2补语超过1补语是否有任何优势?

c c++ java complement

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

如何绘制网络图的补充?

Graphviz中的任何功能都能做到吗?如果没有,任何其他可以做到这一点的免费软件?

python plot graph complement graphviz

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

用于补充整数值的更好算法,不包括前导零二进制位

我将首先解释我的意思是"补充不包括前导零二进制位的整数值"(从现在开始,为简洁起见,我将其称为非前导零位补码或NLZ补码).

例如,有整数92.二进制数是1011100.如果我们执行正常的按位NOT或补码,结果是:-93(有符号整数)或11111111111111111111111110100011(二进制).那是因为前导零位也在补充.

因此,对于NLZ补码,前导零位不补充,那么NLZ补充92或1011100的结果是:35或100011(二进制).通过将输入值与非前导零值的1位序列进行异或来执行操作.插图:

92:  1011100
     1111111 (xor)
     --------
     0100011 => 35
Run Code Online (Sandbox Code Playgroud)


我做了这样的java算法:

public static int nonLeadingZeroComplement(int n) {
    if (n == 0) {
        return ~n;
    }
    if (n == 1) {
        return 0;
    }

    //This line is to find how much the non-leading zero (NLZ) bits count.
    //This operation is same like: ceil(log2(n))
    int binaryBitsCount = Integer.SIZE - Integer.numberOfLeadingZeros(n - 1);

    //We use the NLZ bits count to generate sequence of 1 bits as much as the NLZ bits count …
Run Code Online (Sandbox Code Playgroud)

java algorithm bit-manipulation complement

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

这个C代码的目的是什么?

我正在查看"search.h"C库中"tfind"函数的源代码,我偶然发现了这一行:

#define DEREFNODEPTR(NP) (node)((uintptr_t)(*(NP)) & ~((uintptr_t) 0x1))
Run Code Online (Sandbox Code Playgroud)

这就是它的用法:

    /* Find datum in search tree.
   KEY is the key to be located, ROOTP is the address of tree root,
   COMPAR the ordering function.  */

void *
__tfind (const void *key, void *const *vrootp, __compar_fn_t compar)
{
  node root;
  node *rootp = (node *) vrootp;
  if (rootp == NULL)
    return NULL;
  root = DEREFNODEPTR(rootp);
  CHECK_TREE (root);
  while (DEREFNODEPTR(rootp) != NULL)
    {
      root = DEREFNODEPTR(rootp);
      int r;
      r = (*compar) (key, root->key);
      if …
Run Code Online (Sandbox Code Playgroud)

c pointers complement

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

Python - 找到 2 个列表的补充

我正在寻找一种方法,可以让我在比较 2 个列表时检查缺少哪些元素。很像在这个线程中,但我想用 NumPy Python 编写它。

两个列表的补充?

import numpy as np

numbers = np.array([1,2,3,4,5,6,7,8,9])
A = np.array([2,5,6,9])

def listComplementElements(list1, list2):

    storeResults = []

    for i in list1:
        for j in list2:

            if i != j:
                #write to storeResults if 2 numbers are different
                storeResults.append(i)
            else:
                #if numebrs are equal break out of the loop
                break

    return storeResults            

result = listComplementElements(numbers, A)
print(result) #expected result [1,3,4,7,8]
Run Code Online (Sandbox Code Playgroud)

目前输出如下所示: [1, 1, 1, 1, 3, 3, 3, 3, 4, 4, 4, 4, 5, 6, …

python compare numpy list complement

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

如何获得另一个阵列"补充"?

我最简单的方式来解释我想要的是一个例子:

a = 1:20

b = [2,7,12,18]
Run Code Online (Sandbox Code Playgroud)

现在我想c[1,3,4,5,6,8,...,19,20]与长度16:length(a) - length(b)当然.

有没有办法让我得到c

arrays matlab complement

0
推荐指数
1
解决办法
1404
查看次数

C中的1的补码运算符

在下面的程序中,为什么~a在输出中打印出来10?为什么不-11呢?

#include <stdio.h>

int main()
{
    int a=10;
    ~a;
    printf("complement :  %d\n",a);
}
Run Code Online (Sandbox Code Playgroud)

c complement

0
推荐指数
1
解决办法
421
查看次数

为什么1s补码是-2

int main()
{
       int a=1,b;
       b=~1;
       printf(""%d",b);
       return 0;
}
Run Code Online (Sandbox Code Playgroud)

请通过显示按位操作来解释它将有助于理解......

提前致谢.......

c complement

-1
推荐指数
1
解决办法
375
查看次数

标签 统计

complement ×8

c ×4

java ×2

python ×2

algorithm ×1

arrays ×1

bit-manipulation ×1

c++ ×1

compare ×1

graph ×1

graphviz ×1

list ×1

matlab ×1

numpy ×1

plot ×1

pointers ×1