首页 > 其他分享 >【软件考试】一文学会原码,反码与补码

【软件考试】一文学会原码,反码与补码

时间:2024-10-14 17:20:03浏览次数:8  
标签:表示 反码 二进制 补码 原码 小数

文章目录

三码互转

在计算机中,数值通常以二进制形式表示,原码、反码和补码是三种不同的表示方法。

一、原码

  1. 概念

    • 原码是最直观的二进制表示法,最高位为符号位,0 表示正数,1 表示负数,其余位表示数值的绝对值。
    • 例如,对于 8 位二进制数,+5 的原码是 00000101,-5 的原码是 10000101。
  2. 计算规则

    • 正数的原码就是其二进制表示。
    • 负数的原码是在对应正数的原码基础上,将符号位变为 1。

二、反码

  1. 概念

    • 反码是对原码的一种变形,其目的是为了方便计算。
    • 对于正数,反码与原码相同;对于负数,反码是在原码的基础上,符号位不变,其余位按位取反。
  2. 计算规则

    • 正数的反码就是原码本身。
    • 负数的反码是将原码除符号位外的所有位取反。例如,-5 的原码是 10000101,反码是 11111010。

三、补码

  1. 概念

    • 补码是计算机中实际存储和运算的二进制表示法,它可以将减法运算转化为加法运算,简化计算机的运算过程。
    • 对于正数,补码与原码、反码相同;对于负数,补码是在反码的基础上加 1。
  2. 计算规则

    • 正数的补码就是原码本身。
    • 负数的补码是其反码加 1。例如,-5 的原码是 10000101,反码是 11111010,补码是 11111011。

四、补码的优势

在计算机中使用补码进行运算有以下几个优势:

  1. 可以将减法运算转化为加法运算,简化了运算电路的设计。例如,计算 5 - 3,可以转化为 5 + (-3),而 -3 的补码可以很容易地与 5 的补码进行加法运算。
  2. 可以避免出现“0”的两种表示形式。在补码表示法中,+0 和 -0 的补码都是 00000000,统一了“0”的表示。
  3. 补码的范围比原码和反码更合理。对于 n 位二进制数,原码和反码的表示范围是 -2^(n-1)+1 到 2^(n-1)-1,而补码的表示范围是 -2^(n-1)到 2^(n-1)-1,更加对称和合理。

十进制数转二进制

以下是不同类型的数转换为二进制的方法:

一、正整数转二进制

使用除 2 取余法,具体步骤如下:

  1. 用该正整数除以 2,取余数。
  2. 再用商继续除以 2,取余数。
  3. 重复这个过程,直到商为 0。
  4. 最后将所有余数从下往上排列,就是该正整数的二进制表示。

例如,将十进制数 10 转换为二进制:
10÷2 = 5……0
5÷2 = 2……1
2÷2 = 1……0
1÷2 = 0……1
所以 10 的二进制表示为 1010。

二、负整数转二进制

  1. 先将对应的正整数转换为二进制。
  2. 然后对其取反(所有位 0 变 1,1 变 0)。
  3. 最后加 1 得到负数的二进制表示。

例如,将十进制数 -10 转换为二进制:
10 的二进制是 1010,取反后为 0101,加 1 后为 0110,所以 -10 的二进制表示为 10110(通常用补码表示)。

三、正小数转二进制

使用乘 2 取整法,具体步骤如下:

  1. 用小数部分乘以 2,取整数部分。
  2. 再用剩下的小数部分继续乘以 2,取整数部分。
  3. 重复这个过程,直到小数部分为 0 或者达到所需的精度。
  4. 最后将取出的整数部分从上往下排列,就是该正小数的二进制表示。

例如,将十进制数 0.625 转换为二进制:
0.625×2 = 1.25,取整数部分 1。
0.25×2 = 0.5,取整数部分 0。
0.5×2 = 1.0,取整数部分 1。
此时小数部分为 0,所以 0.625 的二进制表示为 0.101。

四、负小数转二进制

  1. 先将对应的正小数转换为二进制。
  2. 然后对其取反(所有位 0 变 1,1 变 0)。
  3. 最后加 1 得到负数小数的二进制表示(通常也用补码表示)。

例如,将十进制数 -0.625 转换为二进制:
0.625 的二进制是 0.101,取反后为 1.010,加 1 后为 1.011,所以 -0.625 的二进制表示为 1.011(补码形式)。需要注意的是,负小数的二进制表示在计算机中通常也以特定的格式存储和运算,具体的解释可能会因计算机系统和应用场景而有所不同。

标签:表示,反码,二进制,补码,原码,小数
From: https://blog.csdn.net/wendao76/article/details/142886880

相关文章

  • 关于原码、反码、补码以及为什么存在原码、反码、补码
    定义原码数字的二进制表示。在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余二进制位表示数值的大小。例如:10的一个比特位原码是00001010。反码在原码的基础上符号位不变,其余位分别取反(0变成1,1变成0)。补码在反码的基础上加一。......
  • Java - 5 原码、反码、补码
    Java-5原码、反码、补码0表示正,1表示负整数的原码,反码,补码都一样负数的反码=原码符号位不变,其它位取反负数的补码=反码+10的反码,补码都是0Java中没有无符号数计算机运算时,以补码的方式运算看计算结果时,要看原码整数数据类型取值范围数据类型范围byt......
  • JavaSE——进制转换、原码、反码、补码、位运算(左移、右移、取反)
    目录一、四种进制介绍二、进制的转换 (一)二进制—>十进制(二)八进制—>十进制(三)十六进制—>十进制(四)十进制—>二进制(五)十进制—>八进制(六)十进制—>十六进制(七)二进制—>八进制(八)二进制—>十六进制(九)八进制—>二进制(十)十六进制—>二进制三、原码......
  • 原码、反码和补码的概念
    错题考的知识点是计算机中数值的表示方式,特别是原码、反码和补码的概念。原码原码是计算机中表示整数的一种方式,它是直接将数字转换为二进制数,其中最高位作为符号位,0表示正数,1表示负数,其余位表示数值。例如,对于8位二进制数:正数的原码:第一位是0,后面跟数字的二进制表示。负数的......
  • Java的原码、反码和补码
    在Java中,原码、反码和补码是用来表示整数的三种不同的编码方式。这三种编码方式分别用来表示正数、负数以及0。原码:原码是整数的最基本的表示方式,它直接将整数的二进制表示出来。原码的表示方法是,最高位表示符号位(0表示正数,1表示负数),其余位表示整数的绝对值的二进制表示。......
  • Note: 原反补码表示: 合法表示范围, 如补码的最大值2^n-1为什么会有个-1?
    背景:学习关于n+1bit带符号整数的合法表示范围(如下图)笔记缘由:产生了疑惑,不能自解-机器数=无符号数(不包含符号位,所有位都用于表示数值的大小,表示范围非负)+有符号数(原、反、补、移码)-原码:用数值部分表示真值的绝对值,符号位"0/1"对应"正/负"-......
  • 动手动脑——原码,反码,补码
    在计算机科学中,原码、反码和补码是数字在计算机内部表示的一种方式,主要用于二进制数的运算,特别是负数的表示和运算。原码:原码是最直接的二进制表示方法,其中最高位是符号位,0表示正数,1表示负数。剩下的位表示数值的大小。例如,十进制数5的原码表示为:00000101(假设使用5位二进制数......
  • 原码 补码 反码
    #include<iostream>usingnamespacestd;intmain(){inta;cin>>a;intzi[a];for(inti=0;i<a;i++){cin>>zi[i];}if(zi[0]==0){for(inti=0;i<a;i++){cout<<zi[i];......
  • 9月26日原码,补码,反码知识点
    首先是这三码的区别,对于正数来讲三者没有什么区别,区别在于负数反码:原码中除去符号位,其他的数值位按位取反,即0变1,1变0补码:反码+1示例显而易见的对于正数没有区别。那么设计这三个码的意义是什么?上面介绍了原码、反码和补码三者的概念,那么,计算机中为什么要设计补码这一概念呢?因......
  • 成都仪器定制-二进制补码及与原码的互相转换方法
    大沙把一些基础的知识说清楚,本文介绍二进制补码及与原码的转换方法。先说原码,原码‌是一种计算机中对数字的二进制定点表示方法。在原码表示法中,数值前面增加了一位符号位,最高位为符号位,0表示正数,1表示负数。其余位表示数值的大小。二进制补码‌是一种用于表示有符号整数的二进......