补码计算方法

Posted CodeAllen2022

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了补码计算方法相关的知识,希望对你有一定的参考价值。

    ​    ​很基础的知识,但是确实很多人并不知道怎么计算,总结了下,可以收藏,需要的时候看下。

与编程息息相关

学习目标:

            在vc++6.0中int类型所能存储的数字的范围是多少

             int类型所能存储的最大正数用十六进制表示:7FFF FFFF

             int类型所能存储的绝对值最大的负数用十六进制表示是:80000000

           最小负数的二进制代码是多少

            最大正数的二进制代码是多少

            已知一个整数的二进制代码求出原始的数字

            数字超过最大的正数会怎样


补码:

            原码:也叫 符号-绝对值码

                        最高位表示正    1表示负 ,其余二进制位的数字的绝对值的二进制位

                         

                        原码简单,但是加减复杂,存在加减乘除四种运算,增加了CPU的负荷

                        而且0的表示不一样

            反码:运算不便,也没有在计算机中应用

            移码:表示数值平移n位,n称为移码量

                      移码主要用于浮点数的阶码的存储

*******************************************

补码:重点是补码,主要是用来解决整数的存储

十进制转二进制

                              除3取余,直到商为0,余数倒序排列

*******************************************

1.负整数转二进制

                                 先求与该负数相对应的正整数的二进制代码,然后将所有为取反,末尾加一,不够位数时,左边补1

例如:(-3)

           正整数为:011

                  取反:100

            末尾加一:101

            占四个字节,32位,所以补29个1

                      就是          FFFF FFFD

/*2018年1月6日13:01:18

*补码运算

*/

# include<stdio.h>

int main(void)



    int i =-3;

    printf("%#X\\n",i);

    return 0;



/*输出:0XFFFFFFFD

*

*/ 

2.已知二进制求十进制

      如果首位是0,则表明是正整数,按普通的方法来

      如果首位是1,则表明是负整数

                    将所有位取反,末位加一,所得数组就是该负数的绝对值,位数不够补1(因为是负数)

       101111

先取反加一     010001

负数的绝对值: -17

注意:在计算机实验时,前边注意

   

/*2018年1月6日19:34:47

*补码运算,二进制计算

*/

# include<stdio.h>

int main(void)



    int i =0xFFFFFFEF;

    printf("%d\\n",i);

    return 0;



/*

*输出:-17

*/

            

***************

作业:8位二进制转化为十进制

0000 0000                 0

0000 0001                 1

.

.0111 1111                  7F             7*16+15=127       最大值(二进制是有正负的)

1000  0000                  -128

记住下边图就行了

以上是关于补码计算方法的主要内容,如果未能解决你的问题,请参考以下文章

原码,反码,补码

计算机的,反码,原码,补码!求它们的计算方法

原码 反码 补码

Java连载14-补码简介&浮点型整数

原码 反码 补码

原码,反码,补码浅谈