小编use*_*754的帖子

在 R 编程中,& 与 && 和 | 之间有什么区别?对||

我知道 && 和 || 的部分 编写更高效的代码,因为它们在链中进行的测试次数最少,并且一旦我们有足够的信息知道链的结果将是什么,就会立即爆发。

  • 只要 && 在链中遇到 FALSE,它就会停止评估并为整个链返回 FALSE。
  • 一旦|| 在链中命中 TRUE 它停止评估并为链返回 TRUE

但是我在 Garrett Grolemund 的书中读到“...双运算符并不适用于所有地方。&& 和 || 不是矢量化的,这意味着它们只能在运算符的每一侧处理单个逻辑测试......”有人可以吗向我解释强调的部分是什么意思?

做了一些简单的测试,而 & 在两个逻辑向量的相应元素之间进行元素比较时,&& 只比较第一个元素并返回 TRUE,因为运算符没有被向量化?这就是上面强调的所有部分的意思,还是还有更多意思?

c(T, F, F, F, F) & c(T, T, F, T, F)
[1]  TRUE FALSE FALSE FALSE FALSE

c(T, F, F, F, F) && c(T, T, F, T, F)
[1] TRUE

c(F, F, F, F, F) && c(T, T, F, T, F)
[1] FALSE
Run Code Online (Sandbox Code Playgroud)

使用anyand将运算符任一侧的向量折叠为一个布尔值all。 …

r boolean-expression booleanquery

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

C - 当负字符总是被编码为二进制的 2 的补码时,负字符中的有符号位在哪里(-128)?

  • 我知道有符号整数中的最高有效位用于对符号进行编码。
  • 我还发现负整数几乎总是被编码为其二进制的 2 的补码。

我无法调和上述两个事实。

如果我们看这里的-128的例子,在编码时采取以下步骤

  1. 找出 128 的二进制等价物: 10000000
  2. 取 1 的补码: 01111111
  3. 将 1 与 1 的补码相加得到 2 的补码: 10000000

我的问题是:sign bit负整数的在哪里?换句话说,我想了解如何10000000解码为-128 而不是-0

  1. 如果使用最左边的 1 (MSB) 来编码 -128 的负号,那不是给我们留下了 7 位二进制 0000000,其十进制等效值为 0(而不是 -128)?
  2. 或者计算机是否(当然是比喻性的)——当对存储在某个内存位置的负整数执行计算时——以相反的顺序执行上面的步骤 1-3,以在它看到 1 时解码 1 字节字符的值最重要的位(而不是 0)?
  3. 或者是MSB对-128中第8位(2 ^ 7)的符号和位进行编码。

我已经看到了这个问题,但我的不同,因为我很清楚 +128 不能存储在 1 字节中,因为它的有符号二进制将转换为0100000000需要 9 位。

c signed twos-complement

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

[邓特曼书第三版]。16位8086如何寻址16倍于8080的内存?

邓特曼说8086可以寻址的内存是8080的16倍,并对此进行了详细阐述,为16 * 64K = 1MB。因此,我假设一次使用16位(16位处理器)* 64K,因为16条地址线(2 ^ 16)。但是,通过这种计算逻辑,同样具有16条地址线的8080(8位处理器)是否应该能够寻址8 * 64K = 0.5MB?

那么8086是否应该能够处理8080两倍的地址?

请注意突出显示的句子

x86 assembly memory-segmentation x86-16

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

在 R 编程中,any 和 | 之间有什么区别?(或)布尔运算符?

  • (cond1 | cond2 | cond3 | ...)意思是“一组条件中的一个或多个是否为真?”
  • any(cond1, cond2, cond3 ....)意思是“任何条件都为真?”

因此,我们在这里不是说同样的话吗?

使用一种比另一种有什么优势吗?

r booleanquery

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

我应该遵循哪个 C 标准?

在 C18、C11、C99 和 ANSI C 中,我(当前)应该遵循哪个标准,为什么?找出哪些编译器支持哪些标准的最佳方法是什么?对于不同的编程领域,这种选择有何不同?

c standards

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

为什么我们不能在 switch 语句中使用关系表达式?

既然true falseC 中没有布尔类型,那么表达式的x == y计算结果是什么,什么时候为真,什么时候为假?

如果它的计算结果分别为 1 和 0,它们是整数,为什么我们不能caseswitch语句中使用s这样的表达式?

这背后的正确原因是:

  1. case 只允许整数表达式或计算为整数的表达式,而 x == y 不会计算为整数(我不知道如何计算)?或者
  2. 如果 switch 允许像 case 这样的表达式x==y,那么多个 case很有可能最终具有相同的值,即,无论何时,我们都会得到 1,因此多个这样的 case 将评估为 1 或 0;这在 switch 语句中是不允许的。

c switch-statement relational-operators

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