C语言中原码、反码、补码

C语言中原码、反码、补码

  • 一、前言
  • 二、什么是二进制
  • 三、计算机中的原码、反码和补码

一、前言

日常生活中,人类习惯于使用十进制数字来进行运算,这也许得益于人类的十根手指。计算机的不同操作是通过电信号传递的,电信号只存在正电或负电,因此,计算机只适用基底为2的数制,即二进制(binary number)。

二、什么是二进制

二进制由数字0和数字1组成,根据0和1的不同排列组合形成不同的整数,其各位置权重和十进制相同,如下图所示:

C语言中原码、反码、补码_第1张图片

因此,可以用二进制表示任意十进制整数。该二进制转换为十进制为26+23+22+20=77

三、计算机中的原码、反码和补码

整数在计算机中以 补码 形式存储,正整数补码=反码=原码,负整数的补码需要计算。

整数的原码:最高一位是符号位,0表示整数,1表示负数,其余位表示数值大小。

负整数的反码:符号位不变,其他位按位取反。

负整数的补码:反码的基础上+1。

int a = 1;
//原码:00000000 00000000 00000000 00000001
//反码:00000000 00000000 00000000 00000001
//补码:00000000 00000000 00000000 00000001

int b = -1;
//原码:10000000 00000000 00000000 00000001
//反码:11111111 11111111 11111111 11111110
//补码:11111111 11111111 11111111 11111111

你可能感兴趣的:(C语言内容介绍,c语言,开发语言,经验分享,学习)