zoukankan      html  css  js  c++  java
  • HDU -- A+B Again(无符号数的负数输出)

    http://acm.hdu.edu.cn/showproblem.php?pid=2057

    WA 代码:

     1 /* */
     2 # include <bits/stdc++.h>
     3 using namespace std;
     4 
     5 int main()
     6 {
     7     long long int x, y;
     8     while( ~ scanf("%llX %llX", &x, &y) )
     9     {
    10         printf("%llX
    ", x+y);
    11     }
    12     return 0;
    13 }
    View Code

    你会发现当要输出负数时,输出的却是一个很奇怪的正数;

    通过这道题我才发现了“有符号数的输出”和“无符号数的输出”的差别。

    首先先知道哪些是“无符号数”,哪些是“有符号数”

    %d 十进制有符号整数

    %md,m指定的是输出字段的宽度,如果数据的位数小于m,则左端补以空格,若大于m,则

      按实际位数输出,如:

      printf("%4d,%4d",a,b)

      若a=123,d=12345,则输出的结果为:

      空格123,12345

    %ld输出长整形格式(有符号
    %u 十进制无符号整数 
    %f 浮点数 
    %s 字符串 
    %c 单个字符 
    %p 指针的值 
    %e 指数形式的浮点数 
    %x, %X 无符号以十六进制表示的整数 
    %o %O 无符号以八进制表示的整数 
    %g 自动选择合适的表示法

    有符号 与 无符号 的 正数 输出无区别,直接输出

                                   负数有区别了:有符号的负数也可以直接输出

                                                            无符号的负数要把它变成正数,然后输出“-”号 和 正数;

    计算机存储的时候是以补码存数的,输出以原码的形式输出! 
    比如: -1 (32位模式) 
    存: 
    1 000000000000000000000000000000 1<原> 
    1 111111111111111111111111111111 0<反-注意第一位是符号位不变> 
    1 111111111111111111111111111111 1<补> 
    输:<以有符号数输出且是负数 那么原码=补码再求补;其余输出原码=[补码]> 
    以%d形式<这是有符号数输出且是负数>: 
    1 111111111111111111111111111111 1<补> 
    1 000000000000000000000000000000 0<反> 
    1 000000000000000000000000000000 1<原> 
    第一为符号位为1 表示-,所以输出-1

    以%x形式:<这是无符号数>: 
    1 111111111111111111111111111111 1<补> 
    1 111111111111111111111111111111 1<原> 
    不考虑符号所以,输出FFFFFFFF。

    AC代码:

     1 /* */
     2 # include <bits/stdc++.h>
     3 using namespace std;
     4 
     5 int main()
     6 {
     7     long long int x, y;
     8     while( ~ scanf("%llX %llX", &x, &y) )
     9     {
    10         if( x+y>=0 )
    11         {
    12             printf("%llX
    ", x+y);
    13         }
    14         else
    15         {
    16             printf("-%llX
    ", -(x+y));
    17         }
    18     }
    19     return 0;
    20 }
    View Code
  • 相关阅读:
    .NET 4.0 中的契约式编程
    DELL安装Windows Server 2019
    Mysql 5.7.34免安装版本
    MQTT
    WPF属性
    WPF数据绑定
    git系列之(五)git stash 命令
    Vue.js
    git 对比两个分支差异
    TPL 之二 TransformBlock
  • 原文地址:https://www.cnblogs.com/wsy107316/p/11093537.html
Copyright © 2011-2022 走看看