11)C语言之正负数的原码反码补码

Posted 流浪孤儿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了11)C语言之正负数的原码反码补码相关的知识,希望对你有一定的参考价值。

#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>

#include<string.h>

int main()

{

    //正数、负数在计算机中是以二进制的形式存放

    //二进制就只有01,就好像十进制只有0~9,满101

    //二进制满21

    //正数、负数的二进制又被分为原码、反码、补码

    //请记住:任何整数都是以补码形式存放在计算机中的

    //正数的原码、反码、补码三者是相同的,因此正数也可以看成是

    //以原码的形式存放在计算机中

    int a = 0;//a是有符号的整形

    //int类型的变量占4个字节,共32个位,其中最高位0表示正数,-1表示负数

        //00000000000000000000000000000000,左边为高位

    int b = ~a;

//按位取反11111111111111111111111111111111-------得到b的补码,

    //这里的按位取反是运算符~,连符号位都要变

//补码减一11111111111111111111111111111110-------得到b的反码

//按位取反10000000000000000000000000000001-------得到b的原码

    //这里的按位取反是负数补码转为原码的转换过程,符号位不能变

    printf("%d\\n", b);//我们使用的,打印的是这个数的原码,结果为-1

    //计算机用的是补码

    return 0;

}

/*对负数而言原码符号位不变其它位按位取反得到反码,反码加一的补码

    反之补码减一,再按位取反便可以得到原码

   负数在内存中存储的时候,存储的是二进制的补码*/

/*只要是整数,内存中存储的都是二进制的补码

   正数-原码、反码、补码相同*/

以上是关于11)C语言之正负数的原码反码补码的主要内容,如果未能解决你的问题,请参考以下文章

C语言位运算符详解

C语言位运算符详解

初始C语言

C语言输入一个整数,求它的原码,反码,补码值

C语言 原码--反码--补码

18 位运算