• 计算机组成原理


    I:原码,补码和反码

     

    1. 在计算机系统中,数值一律用补码来存储

    使用补码,可以将符号位和其他位统一处理;同时减法也可按加法处理。

    两个用补码表示的数相加是,如果最高位(符号位)有进位,则进位被抛弃。

    2.正数的补码和原码相同

    3.负数的补码:符号位为1,其余位为原码按位取反,然后整个数+1

    4.已知补码求原码:

         负数:(符号位)为1,其余各位取反,然后整个数+1

    5.模:

      一个计量系统的计数范围,时钟的计量范围是0~11,模=12

      模实质上说计量器产生“溢出”的量,它的值在计量器表示不出来,计量器上只能给你表示出模的余数。任何有模的计量器,均可减法为加法运算。例如当前时间是6点,但时钟指向10点,那么可以倒拨4的小时 10 - 4 = 6;也可以顺拨8个小时 (10 +8)%12 = 6 ,对于模而言,8和4互为补数,两者相加等于模。

     

    Int32 a = -1 使用Convert.ToString()方法转换为字符串时,会转换成一个32位长度的字符串 11111111111111111111111111111111 对这里还是不明白。首位为1(负号)后面取反?写个小东西验证一下。

     

     

    namespace SchedulerEngine
    {
    public partial class MainPage : UserControl
    {
    public MainPage()
    {
    InitializeComponent();

    int a = -12341;
    string t = GetComplement(a);

    Debug.WriteLine(GetStOfInt(a
    * -1));

    }

    public static string GetStOfInt(int _a)
    {
    return Convert.ToString(_a, 2);
    }

    public static string GetStOfInt(long _a)
    {
    return Convert.ToString(_a, 2);
    }


    public string GetComplement(int _a)
    {
    Debug.WriteLine(GetStOfInt(_a));
    if (_a >= 0)
    {
    return Convert.ToString(_a, 2);
    }
    else
    {
    //得到一个位数相同,但首位(符号位)为1(负),其他位为零的数
    int b = 1 << (Convert.ToString(_a, 2).Length - 1);
    Debug.WriteLine(GetStOfInt(b));
    //两者相减,得到一个去掉符号位的数
    int a = _a - b;
    Debug.WriteLine(GetStOfInt(a));
    //取反加1得到原码
    int c = ~a; //这个操作会增加一位,为什么呢?
    Debug.WriteLine(GetStOfInt(c));
    int d = c + 1;
    Debug.WriteLine(GetStOfInt(d));
    //有符号位的原码
    return GetStOfInt(d);
    }
    }
    }
  • 相关阅读:
    RabbitMQ从入门到精通(一)
    MQ的架构作用
    Docker可视化管理工具
    Linux修改war包中文件
    Redis--各个数据类型最大存储量
    linux中直接修改jar包内配置文件
    脚本发布程序
    maven 安装到私服
    HTML基础 text-indent 把文字移出浏览器,隐藏起来
    HTML基础 td valign 设置文本靠上 居中 靠下
  • 原文地址:https://www.cnblogs.com/GameCode/p/1769972.html
Copyright © 2020-2023  润新知