首页 > 其他 > 详细

补码运算的那些事儿

时间:2019-09-09 12:25:04      阅读:94      评论:0      收藏:0      [点我收藏+]
数分为正数和负数,计算机中的数是用二进制来表示的,数的符号也用二进制来表示,所谓带符号数就是最高位是符号位,一般规定正数的符号位为0,负数的符号位为1.
把一个数连同其符号在内数值化表示叫机器数,机器数的表示可以用不同的码制,常用的有原码、补码、反码。

补码:

首先,我们需要了解一下补码的表示方式:

正数的补码就是其本身

负数的补码有两种变换方式:

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

  2. 是在其正数的基础上,各位取反(包含符号位)、+1

 

例如:
[+1] = [00000001]原 = [00000001]反 = [00000001]补

[-1] = [10000001]原 = [11111110]反 = [11111111]补

  

[+0] = [00000000]原 = [00000000]反 = [00000000]补

[-0] = [10000000]原 = [11111111]反 = [00000000]补

 

[+127] = [01111111]原 = [01111111]反 = [01111111]补

[-127] = [11111111]原 = [10000000]反 = [10000001]补

 

运算:

补码加法:

[X+Y]补 = [X]补+[Y]补

 

例:X = +0110011,Y=-0101001,求[X+Y]补

[X]补 = 00110011     [Y]补 = 11010111

[X+Y] = [X]补 + [Y]补 = 00110011 + 11010111 = 00001010

注:因为计算机中运算器的位长是固定的(定长运算),上述运算中产生的最高位进位将丢掉,所以结果不是100001010而是00001010.

 

 

补码减法:

[X-Y]补 = [X]补  - [Y]补 = [X]补 + [-Y]补

例:1 -1 [十进制]

1 的补码 :00000001

-1的补码:11111111

1 + (-1) = 00000001 + 11111111 =00000000 = 0

 

 

 

例:-7 - (-10)[十进制]

改为加法形式: -7 -(-10) = -7 + (-(-10))

-7的补码:11111001

-(-10)的补码:-10的原码为10001010,-(-10)的原码为00001010

-(-10) 的补码就是其原码:00001010

-7-(-10)=11111001 + 00001010 = 00000011 = 3

 

 

资料:

http://www.doc88.com/p-3743481807692.html?tdsourcetag=s_pcqq_aiomsg

http://www.renrendoc.com/p-19508643.html

https://blog.csdn.net/leoe_/article/details/79096568

百度百科-补码

补码运算的那些事儿

原文:https://www.cnblogs.com/adongyo/p/11490338.html

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