原码,反码,补码笔记

学习计算机组成原理的时候学过这个,结果今天看了一道LeetCode的习题,发现自己补码怎么算的都给忘了,罪过罪过,于是乎就搜了相关资料回忆了下,以下这篇文章写得很好,想记录下来方便以后查看。

http://www.cnblogs.com/zhangziqiu/archive/2011/03/30/ComputerCode.html

这里简要概述下:

1. 原码:

原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制:

[+1] = 0000 0001

[-1] = 1000 0001

2. 反码:

负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.

[+1] = [00000001] = [00000001]

[-1] = [10000001] = [11111110]

3. 补码:

正数的补码就是其本身

负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)

[+1] = [00000001] = [00000001] = [00000001]

[-1] = [10000001] = [11111110] = [11111111]

原文地址:https://www.cnblogs.com/gogolee/p/6642898.html