10.14上午 while无限读取和二进制中的负数

发布于 2024-10-14  1143 次阅读


#include <stdio.h>

int main() {
    int a, b; // 声明两个整数变量 a 和 b
    while (scanf("%d%d", &a, &b)) // 循环读取两个整数
        printf("%d\n", a + b); // 输出它们的和
    return 0; // 程序正常结束
}

在C语言中,非零即真

但若读取失败(例如,输入非整数或到达文件末尾),则返回值为 0 或 EOF,循环结束


二进制中,最高位(符号位)有两个用处,第一个是它也有用(也参与运算),第二个是它能帮助我们判断正数还是负数

有符号整数的表示

在计算机中,有符号整数通常使用 补码 表示。补码的规则如下:

  • 正数的补码与其原码相同
  • 负数的补码是 其绝对值的原码 取反后 加 1

计算负数的补码

如果你有一个二进制数,其最高位为 1,表示这是一个负数。要计算这个负数的十进制值,可以按照以下步骤进行:

  1. 取反:将所有位取反(0 变 1,1 变 0)
  2. 加一:在取反后的结果上加 1
  3. 转换为十进制:将得到的二进制数转换为十进制,并加上负号

如果是求负数的二进制数字

那么就先求其绝对值的二进制数,取反然后加1就行了

届ける言葉を今は育ててる
最后更新于 2024-11-18