精华内容
下载资源
问答
  • 原码 补码 反码

    2020-05-25 20:23:19
    原码 补码 反码 主要内容 数据的常见分类 机器数和机器数的真值 原码 补码 反码 机器数和机器数的真值 在计算机中所有的数据都是以二进制保存的 +3=0000 0011 -3=1000 0011 在机器数...

    原码 补码 反码

    主要内容

    • 数据的常见分类

    • 机器数和机器数的真值

    • 原码

    • 补码

    • 反码

    机器数和机器数的真值

    在计算机中所有的数据都是以二进制保存的

    +3=0000 0011

    -3=1000 0011

    在机器数中,使用最高位为来表示数字的正负;1为负,0为正;

    一个字长为8位;

    机器数真值就是机器数所对应的真正的数值

    1000 1101=-13

    0000 1101=13

    原码

    符号位: 首先确定一个数的正负,如果是正数,首位使用0表示,如果是负数首位用负数来表示;

    有效位:真值的绝对值转化为二进制形式啊

    将符号位和有效位拼接到一起;

    反码

    正数:正数的反码和原码相同:+3 0000 0011[原]=0000 0011[反]

    负数:符号位不变,其余各位直接取反,二进制只有两种状态,1-->0,0-->1

    补码

    正数:正数的原码反码补码全部相同:+3 0000 0011【原码】=0000 0011【反码】=0000 0011【补码】

    负数:求得原码,再求反码,最后一位上+1

    为什么需要反码和补码

    反码:在设计计算机的时候只设计了加法器,没有减法器,使用加法计算来表示减法

    补码:反码解决了没有减法器的问题,但是会出现正负相加,0的表示不唯一,使用补码进行修正

    补码转原码

    正数:补码=反码=原码

    负数:补码的补码 首位不变,其余取反再加一

    反码转原码

    正数:不用转

    负数:怎么转过去怎么转回来

    展开全文
  • 原码补码反码

    2020-06-10 19:34:40
    原码反码补码 计算机存数据的时候存的是数字的补码 内存大小 程序员便才能操作的内存最小单位是:malloc...**注:**正数的原码补码反码都是一样的 原码 原码 = 符号位 + 真值 符号位:最高位标是符号位(0 表示正,1

    原码反码补码

    计算机存数据的时候存的是数字的补码

    内存大小

    程序员便才能操作的内存最小单位是:malloc(字节)
    位(bit)
    字节(byte)    1字节 == 8 位
    kb            1kb = 1024字节
    MB            1MB = 1024 kb
    G             1G = 1024 MB
    T             1T = 1024G
    

    **注:**正数的原码补码反码都是一样的

    1. 原码

    原码 = 符号位 + 真值

    符号位:最高位标是符号位(0 表示正,1表示负)

    真值:数字的绝对值的二进制

    例:

    10的原码:00001010
    -256的原码:10000001 00000000
    128的原码:00000000 01000000
    
    
    1. 反码

    负数的反码 -> 原码符号位不变,其他位取反

    10的反码:00001010(本身)
    -10的反码:11110101
    -2的反码:10000010(原码) 11111101(反码)
    
    1. 补码

    负数的补码 -> 反码加1

    计算机存储和操作的是补码,显示结果的时候返回原码

    10的补码:00001010(本身)
    -10的补码:11110110
    -2的补码:11111110(反码)
    
    3+2=5
    00000011 + 00000010 == 00000101 ->5
    -3-2 = -5
    
    展开全文
  • 原码 补码 反码

    2019-07-15 14:26:24
    1.正数的原码补码反码相同,三码合一 2.符号为 0:整数 1:负数 3.负数的补码是在原码基础上除符号位,各个位取反,补码=反码+1 4.✳计算机底层都以补码的方式来存储数据 ...

    1.正数的原码,补码,反码相同,三码合一
    2.符号为 0:正数 1:负数
    3.负数的补码是在原码基础上除符号位,各个位取反,补码=反码+1
    4.✳计算机底层都以补码的方式来存储数据

    展开全文
  • 主要为大家详细介绍了java原码补码反码的关系,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 原码、反码、补码与位运算,原码补码反码目录导引:一、原码、反码、补码二、位运算一、原码、反码、补码计算机只有加法运算器,计算器中存储、计算数据都是补码,正数和0的原码、反码、补码相同,负数的原码、反码...

    原码、反码、补码与位运算,原码补码反码

    目录导引:

    一、原码、反码、补码

    二、位运算

    一、原码、反码、补码

    计算机只有加法运算器,计算器中存储、计算数据都是补码,正数和0的原码、反码、补码相同,负数的原码、反码、补码不同。

    原码:符号位+绝对值(0表示正数,1表示负数)

    反码:符号位不变,其余位取反

    补码:反码+1

    1、为什么要用补码存储,以及补码计算?

    因为原码和反码计算会出现+0 和 -0以及计算错误问题,而补码是正确而简单的,符号位也直接参与运算。

    示例:

    int是4字节,1字节是8位,所以一个int值是32位,第一位是符号位,所以int的取值范围是 -2^31 ~ 2^31-1(10000000 00000000 00000000 00000000~01111111 11111111 11111111 11111111,该二进制是补码)

    分别计算 2+(-1)和1+(-1),过程如下:

    2的原码、反码、补码分别是 00000000 00000000 00000010,00000000 00000000 00000010,00000000 00000000 00000010

    1的原码、反码、补码分别是 00000000 00000000 00000001,00000000 00000000 00000001,00000000 00000000 00000001

    -1的原码、反码、补码分别是 10000000 00000000 00000001,11111111 11111111 11111111 11111110,11111111 11111111 11111111 11111111

    2和-1原码相加,结果为:10000000 00000000 00000011(原码),0代表正数,1代表负数,所以值为-3,错误。

    2和-1反码相加,结果为:00000000 00000000 00000000(反码),对应原码的结果为00000000 00000000 00000000(原码),值为0,错误。

    2和-1补码相加,结果为:00000000 00000000 00000001(补码),对应原码的结果为00000000 00000000 00000001(原码),值为1,正确。

    1和-1原码相加,结果为:10000000 00000000 00000010(原码),值为-2,错误。

    1和-1反码相加,结果为:11111111 11111111 11111111 11111111(反码),对应原码的结果为10000000 00000000 00000000(原码),值为-0,不准确。(关于+0和-0的设计,有兴趣可自行百度)

    1和-1补码相加,结果为:00000000 00000000 00000000(补码),对应原码的结果为00000000 00000000 00000000(原码),值为0,正确。

    二、位运算

    位运算符包括: 与(&)、或(|)、非(~)、异或(^)、左移(<>)、无符号右移(>>>)

    &:二进制位同时为1时,结果为1,否则为0

    | :位有一个为1时,结果为1,否则为0

    ~:位0变1,1变0

    ^:位不同时,结果为1,否则为0

    <

    >>:位整体向右移动,正数左边补0,负数左边补1

    >>>:位整体向右移动,左边补0

    示例:

    public class BitOperationTest {

    public static void main(String[] args) {

    int a = 13, b = 6;

    System.out.println(" a :" + getBinaryStr(a));

    System.out.println(" b :" + getBinaryStr(b));

    System.out.println(" a&b :" + getBinaryStr(a & b));

    System.out.println(" a|b :" + getBinaryStr(a | b));

    System.out.println(" ~a :" + getBinaryStr(~a));

    System.out.println(" a^b :" + getBinaryStr(a ^ b));

    System.out.println(" a<

    System.out.println(" a>>b :" + getBinaryStr(a >> (b - 4)));

    System.out.println(" -a :" + getBinaryStr(-a));

    System.out.println(" a>>>b:" + getBinaryStr(a >> (b - 4)));

    System.out.println("-a>>>b:" + getBinaryStr((-a) >> (b - 4)));

    }

    private static String getBinaryStr(int n) {

    StringBuilder str = new StringBuilder(Integer.toBinaryString(n));

    int len = str.length();

    if (len < 32) {

    for (int i = 0; i < 32 - len; i++) {

    str.insert(0, "0");

    }

    }

    return str.substring(0, 8) + " " + str.substring(8, 16) + " " + str.substring(16, 24) + " " + str.substring(24, 32);

    }

    }

    //Result

    a    :00000000 00000000 00000000 00001101

    b    :00000000 00000000 00000000 00000110

    a&b   :00000000 00000000 00000000 00000100

    a|b   :00000000 00000000 00000000 00001111

    ~a   :11111111 11111111 11111111 11110010

    a^b   :00000000 00000000 00000000 00001011

    a<<2  :00000000 00000000 00000000 00110100

    -a   :11111111 11111111 11111111 11110011

    a>>2  :00000000 00000000 00000000 00000011

    (-a)>>2 :11111111 11111111 11111111 11111100

    a>>>2 :00000000 00000000 00000000 00000011

    (-a)>>>2:00111111 11111111 11111111 11111100

    如有疑问欢迎提出,如有错误欢迎指正。

    转载请注明本文地址:https://www.cnblogs.com/yqxx1116/p/11657307.html

    相关文章暂无相关文章

    展开全文
  • 真值 原码 补码 反码 移码

    千次阅读 2018-11-23 16:24:36
    真值 原码 补码 反码 移码 真值是相对与其它四种的数字类型 书写中一般表示的数叫做"真值" 机器中编码表示的数 "机器数||机器码&lt;原码 补码 反码 移码 &gt;"   原码   ...
  • 本文为大家解析了java原码补码反码的关系,供大家参考,具体内容如下原码:不管源数据是十进制还是十六进制,统统将数字转成二进制形式反码:把原码的二进制统统反过来,0变成1,1变成0补码:负数的反码加1,就是...
  • 原码补码反码的关系

    2016-04-05 19:55:30
    原码补码反码的关系

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,413
精华内容 3,365
关键字:

原码补码反码