计算器原码、反码和补码和位移的一些总结

    xiaoxiao2021-04-01  113

    计算器原码、反码和补码的一些基础知识:

    来自百度百科的一些概念解释:

    在计算机系统中,数值一律用补码来表示和存储;

    原码一般是针对用户而言,补码是针对计算机的具体存储来使用。

    转换关系:

    1、正整数、负整数、转换如何转换为补码

    a、正整数的补码是其二进制表示,与原码相同

    【例1】+9的补码是00001001。(备注:这个+9的补码是用8位2进制来表示的,补码表示方式很多,还有16位二进制补码表示形式,以及32位二进制补码表示形式,64位进制补码表示形式等。每一种补码表示形式都只能表示有限的数字。)

    b、求负整数的补码,将其对应正数二进制表示所有位取反(包括符号位,0变1,1变0)后加1

    同一个数字在不同的补码表示形式中是不同的。比如-15的补码,在8位二进制中是11110001,然而在16位二进制补码表示中,就是1111111111110001。以下都使用8位2进制来表示。

    【例2】求-5的补码。

    -5对应正数5(00000101)→所有位取反(11111010)→加1(11111011),所以-5的补码是11111011,存储到一个字节就是0xFB。

    c、0的补码

    【例3】数0的补码表示是唯一的。

    [+0]补=[+0]反=[+0]原=00000000

    [ -0]补=11111111+1=00000000

    二、补码 如何转化为原码

    已知一个数的补码,求原码的操作其实就是对该补码再求补码: ⑴如果补码的符号位为“0”,表示是一个正数,其原码就是补码。 ⑵如果补码的符号位为“1”,表示是一个负数,那么求给定的这个补码的补码就是要求的原码。 解释: 补码这个编码方案要解决的是如何在机器中表示负数,其本质意义为用一个正数来表示这个正数对应的负数。所谓-20的补码是指:如何在机器中用补码形式表示-20。具体过程是这样的:将20的二进制形式直接写出00010100,然后所有位取反变成11101011,再加1变成了11101100。最简单的补码转换方式,不必去理会转换过程中的符号位,只关注转换前和最终转换后的符号位就行了。 那么对11101100求出其补码又具有什么现实含义呢?对一个数求补,逻辑过程是对这个数的所有的二进制位按位取反再加1。现实含义是求出这个数对应的负数形式。对11101100求补就是求出这个数对应的负数的形式,直接操作下11101100,先所有位取反00010011,再加上1就成了00010100。对11101100求出其补码的含义:11101100按照现行补码码制表示的有符号数是-20,对于-20求补就是求出其对应的负数-(-20),现实中-(-20)是+20,那么求补运算的结果符合现实情况吗,00010100转换成有符号数正是+20,这就说明了补码自身逻辑意义是完整的,是不会自相矛盾的。 【例4】已知一个补码为11111001,则原码是10000111(-7)。 因为符号位为“1”,表示是一个负数,所以该位不变,仍为“1”。 其余七位1111001取反后为0000110; 再加1,所以是10000111。 位移的一些基础知识:

    转载请注明原文地址: https://ju.6miu.com/read-665649.html

    最新回复(0)