11)C语言之正负数的原码反码补码
Posted 流浪孤儿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了11)C语言之正负数的原码反码补码相关的知识,希望对你有一定的参考价值。
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<string.h> int main() { //正数、负数在计算机中是以二进制的形式存放 //二进制就只有0和1,就好像十进制只有0~9,满10进1 //二进制满2进1 //正数、负数的二进制又被分为原码、反码、补码 //请记住:任何整数都是以补码形式存放在计算机中的 //正数的原码、反码、补码三者是相同的,因此正数也可以看成是 //以原码的形式存放在计算机中 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语言之正负数的原码反码补码的主要内容,如果未能解决你的问题,请参考以下文章