首页 > 其他 > 详细

原码,反码,补码,和取反运算——适用于二进制底层的概念理解

时间:2020-02-13 00:28:12      阅读:88      评论:0      收藏:0      [点我收藏+]

我们日常用的数字是给我们人类用的,所以叫真值。而机器(计算机)理解的数字通常是二进制所组成的数字,所以称为机器数。

二进制在内存中以补码形式在其中存储,计算机计算数字是通过补码的形式进行计算的,也就是说不管正数,还是负数在计算机里面,都要用补码来表示。

在原码,反码,补码中,最高位来表示正负,用0表是正,1表示负;

如十进制的10表示为:+1010--->原码:0 1010;-1010--->原码: 1 1010;

 

 

笔记一:原码,反码,补码技术分享图片

*规则:

正数中:原码=反码=补码;例子拿上面的:+1010---> 0 1010;

+1010--->原码: 0000 1010;(最高位0表示负号)

+1010--->反码: 00000 1010;

+1010--->补码: 0000 1010;

负数中的规则如下:例子拿上面的:-1010---> 1 1010;

-1010--->原码: 1000 1010;(最高位1表示正号)

-1010--->反码: 1111 0101;(符号位不变,数值位:0变1,1变0)

-1010--->补码: 1111 0110;(符号位不变,数值位:0变1,1变0。最后得出来的数字再加1。简单点总结为:“反码加1”)

笔记二:取反。

注意:取反运算不等同于求补码!

*“~”这个小波浪号叫取反。~10=-11,~(-10)=9。

规则:对一个数进行取反运算时,先对这个数按位取反得出值X1,再对X1求补码,即得出结果。

例子:对57进行取反。

其57按位取反后二进制表示为(表示一个字节  8bit) 1100 0110

1100 0110  (最前面的第一位表示符位 )

1表示次数为负数

1100 0110  可表示为     -(2^6+2^2+2^1) = -70;

不管正数,还是负数在计算机里面,都要用补码来表示

即补码=符号位以后的按位取反后加1    

反之减1

所以 -70 = 1100 0110 符号位以后按位取反后再加一为 1011 1010 = -58

即~57 = -58;

负数反之即可。

其实简单点,这个符号的运算法则是:如果一个数取反,那么值等于这个数的相反数再减去1。总结:~X=(-X-1)。

 

技术分享图片

 

原码,反码,补码,和取反运算——适用于二进制底层的概念理解

原文:https://www.cnblogs.com/hmy-666/p/12301888.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!