- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的代码:
#include <stdio.h>
void main() {
char a, b;
char c;
printf("enter 2 chars: ");
a = getchar();
b = getchar();
c = a - b;
printf("%d",c );
}
我正在尝试查找两个字符之间的绝对值,例如 'A'&'a'=>32'a'&'A'=>32我的代码显示否定答案,如果不使用abs函数我应该做什么,或者如果我尝试了这个:
printf("%u",c );
但它给了我 4294967264。有没有任何简单的方法来做到这一点?它应该使用 getchar 和 putchar!
最佳答案
没有分支:(假设二进制补码整数表示)
#include <stdio.h>
int main(void)
{
printf("Enter 2 chars: ");
char a = getchar();
char b = getchar();
char c = a - b;
c = (c^-(c < 0)) + (c < 0);
printf("%d\n", c);
}
分成几部分:
(c < 0)
给出0
当c
为正:
c = (c^-0) + 0
〜> c = c^0
... $foo XOR 0 给出 $foo
c = c
无事可做。
(c < 0)
给出1
当c
为负:
c = (c^-1) + 1
... -1
二进制补码中的所有位均已设置 ( ~0
)
c = (c^(~0)) + 1
...负c
二进制补码 XOR ~0
给出-c - 1
c = -c - 1 + 1
〜> c = -c
gcc 8.3 -O3:(cl v15.9.0-pre.3.0 生成等效的程序集)
mov edx, edi ; edx = c
shr edx, 31 ; right shift, keep only the sign bit (c < 0) [sign]
mov eax, edx ; eax = [sign]
neg eax ; eax = -[sign]
xor eax, edi ; eax = -[sign] xor c
add eax, edx ; eax += [sign]
关于c - ASCII 表中不带 "abs"或 "if"的 2 个字符之间的差的绝对值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53470297/
我正在尝试解决一个问题: 编写一个程序计算非负整数之间的差值。 输入: 输入的每一行都由一对整数组成。每个整数都在 0 到 10 之间提高到 15(含)。输入在文件末尾终止。 输出: 对于输入中的每一
我有一个这样的数据框: Current Dataframe: ID Price Price_List 0 Prodt1 1500 [-5.2, -4.6, -3.3,
很难解释...让我试试: 我构建了一个脚本来比较两个用户的兴趣(爱好) 假设用户 A 有 44 种爱好,并且与用户 B(有 19 种爱好)有 13 种共同爱好所以在伪代码中(其中 % 是我的公式):
我在 LINQ 查询中使用 EntityFunctions 类: var a = dbContext.Where(x=>EntityFunctions.DiffMinutes(dateA,dateB)
我正在做一项作业,我应该返回 3 个值中最小的一个(绝对值,如程序所述)。当只需要返回 2 个值时,它工作得很好,但是当我添加第三个值时,它开始在方法内的 Math.min 处显示“找不到符号”。 :
我写了一个名为 absD 的函数,我想返回它的参数的绝对值..我在 cygwin 中使用 GCC 内联汇编.. 我不明白为什么它不起作用。我正在加载到内存中。然后进入 st(0)我在哪里使用 fabs
以原始形式。 svm 中很少有 alpha 值为正,相应的 x 将是支持向量,如图所示 http://en.wikipedia.org/wiki/Support_vector_machine . 如果
我对 xcode 中 ABS(A) 和 abs(int) 这两者的区别感到困惑。似乎也无法在网上找到任何解释。我应该使用哪个?我实际上正在研究加速度计。使用 ABS(A) 和 abs(int) 给了我
我一直在努力尝试理解 pandas 时间戳和时间增量。我喜欢你使用它们的方式,但在尝试减法时我发现这有点奇怪: now = pd.Timestamp('now') then = now - pd.to
假设我有一个对称矩阵 M,它不是正(半)定的,我想计算它的 k 顶(绝对值)特征值(和相应的特征向量)。现在,可以使用截断的 SVD 来做到这一点,它将返回所述特征值的绝对值,然后必须检查符号并找到相
问题很简单。我需要一行命令,例如, Math.round((-Math.random() * 2)) , 输出 只是显示 1 和 -1 .我试图弄清楚,但这似乎不是一件容易的事!我可以使用 IF 命令
我有一个看起来像这样的表: Country | Item | Col1 | Col2 | Col3 | Col4 4 | 4 | .152 | .01 | .65 | 1
我是 Laravel 框架的新手,我正在寻找如何编写查询以获得绝对值(简而言之,忽略 + 和 - 符号,只显示数据库中的数字。我知道我们可以使用 Abs 来获得它。但我不知道该怎么做。看看我的代码:
Working jsfiddle 对 jQuery/javacript 来说还是个新手,但我有 2 个函数,它们在检查时对隐藏值求和,并且我需要生成它们差异的绝对值: $(document).read
我有这个数据框和代码。 from pandas import DataFrame import pandas as pd import numpy as np df = pd.DataFrame({'
我知道 - 过早的优化。 但是我有代码可以查明某个位置是否发生了变化,而不是缓存的位置。 当前代码是: if(abs(newpos-oldpos) > 1){ ..... } 使用下面的是不是
This question它的答案描述了为什么 i32 上的 abs() 返回 i32 而不是 u32。它说“似乎公认的解决方法是使用 as u32 进行转换”。但是,如果参数是 std::i32::
我是一名优秀的程序员,十分优秀!