• 数字逻辑练习题(*模拟 & 库函数)


     数字逻辑练习题

    时间限制: 1 Sec  内存限制: 128 MB
    提交: 291  解决: 48
    [提交][状态][讨论版]

    题目描述

    原码、反码、补码都是一样的,都是正数本身。 
     
    对于负数: 
    原码是符号位为 1,数值部分取绝对值的二进制。 
    反码是符号位为 1,其它位是原码取反。 
    补码是符号位为 1,其它位是原码取反,未位加 1。 
     
    输入一个 64bit 十进制整数,输出它的原码,反码,补码的 16 进制表示法 

    输入

    有多组数据,每组数据一行,为一个 64bit 十进制整数,包含正负符号和数值,格式见样例。 
    输入保证有唯一原码,反码,补码对应。 

    输出

    每组输出三个 16 进制数,分别为原码,反码,补码。 

    样例输入

    +1
    -1
    +10086
    -2333333
    

    样例输出

    0x0000000000000001
    0x0000000000000001
    0x0000000000000001
    0x8000000000000001
    0xfffffffffffffffe
    0xffffffffffffffff
    0x0000000000002766
    0x0000000000002766
    0x0000000000002766
    0x8000000000239a95
    0xffffffffffdc656a
    0xffffffffffdc656b
    

    提示

    来源

    [提交][状态]



    #include <bits/stdc++.h>
    using namespace std;
    #define LL long long
     
    int main()
    {
        LL a;
        char s[128];
        while (~scanf("%s", s)) {
            sscanf(s, "%lld", &a);  ///很巧妙的方式
            if (s[0] == '-' && a == 0) {  ///对0特判
                printf("0x8000000000000000
    ");
                printf("0xffffffffffffffff
    ");
                printf("0x0000000000000000
    ");
                continue;
            }
            if (a >= 0) {
                printf("0x%016llx
    ", a);
                printf("0x%016llx
    ", a);
                printf("0x%016llx
    ", a);
            } else {
                printf("0x%016llx
    ", ((a - 1) ^ 0xffffffffffffffff) | 0x8000000000000000);
                printf("0x%016llx
    ", a - 1);
                printf("0x%016llx
    ", a);
            }
        }
        return 0;
    }






  • 相关阅读:
    iSCSI 原理和基础使用
    Kerberos原理和基础小结
    LDAP学习小结【仅原理和基础篇】
    nmcli 学习小结
    如何让百度收录自己的网站?
    dedecms SESSION变量覆盖导致SQL注入漏洞修补方案
    cms网站模板收集
    学会这些装饰技巧,分分钟让你家看起来挑高一倍!
    15 个最佳 jQuery 翻书效果插件
    CSS动画简介
  • 原文地址:https://www.cnblogs.com/zswbky/p/8454156.html
Copyright © 2020-2023  润新知