原码反码补码

笔记

原码反码补码
计算机中常见数据的分类
机器数和机器数的真值
原码
反码
补码
扩展知识
为什么需要反码和补码
使用补码计算
补码转原码
机器数
数值在计算机中的二进制表示形式

注意:机器数是带有符号的,最高位是符号位,使用0表示正数,使用1表示负数

5->0000 0101

一个数据表示时,第一位为符号位,剩余的为有效位

字16位 1位符号 15位有效数据位

int->整数 4个字节 32 -2147483648—2147483647

-231—232-1

long->长整型8个字节64 一位符号63 -263-263-1

1000 0111=-7

真值
机器数所对应的二进制的真正的数值

1000 0111=-7

0000 1111=15

1000 1010=-10

原码
原码就是符号位加上真值的绝对值

正数:符号位 有效位 +11 11-> 000 1011

​ 0000 1011

负数:符号位 有效位 -15->取绝对值 15->000 1111

​ 1000 1111

求原码:

34 00100010

-39 10100111

-55 10110111

反码
正数:正数的反码=原码

负数:符号位不变,其余各位逐一取反,只有两种状态[0,1] 1->0 0->1

-49

原码 10110001

补码 11001110

-36

原码 10100100

补码 11011011

补码
正数:正数的原码=反码=补码 如+3 0000 0011[原]=0000 0011[反]=0000 0011[补]

负数:先求得反码,在负数反码的基础上,加1

原码:11000001

反码:10111110

补码:10111111

10100101

11011010

11011011

11111000

10000111

10001000

扩展
为什么需要反码和补码?
在设计计算机时,只设计了加法器,没有设计减法器;

5-3=5+(-3)

原码不可以直接计算的!

反码:解决了只设计加法器,使用加速器进行减法运算的问题;

缺点:正负相加0的表示不唯一;

补码[高位溢出]

1=0000 0001[补]

-1=1111 1111[补]

0000 0001

1111 1111

0000 0000

使用补码计算
67-49

01000011

10110001

11001110

11001111

00010010

-33-23

10100001

11011110

11011111

10010111

11101000

11101001

11001000

将补码转原码
因为负数的补码不能直接读出结果,但是原码可以,所以将补码转原码,可以读出负数的值;

补码->原码

原则:补码的补码

把补码当原码,求补码

计算规则:符号位不变,其余取反,然后加1;

求-128的补码 为1000 0000[-128补]

一个字节,不可以表示-128的原码

1000 0000 1000 0000[-128的原码]

求反码

1111 1111 0111 1111

加一

1111 1111 1000 0000

1000 0000

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值