原码反码补码

本文解释了如何在内存中存储无符号和有符号数,包括二进制表示、原码、反码和补码的概念,以及如何从内存读取数据并进行无符号和有符号之间的转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何往内存存数据

     无符号数a的8个bit全部用来表示数据[0,255],255在内存上存放ff

     有符号数b的有个bit用来存放符号位[-128,127],存放的是-1的反码ff

原码反码补码,是针对有符号数来说的!!!!!!!!!!!!!!!!

无符号,8个bit都用来存放数据。

-1的反码为什么是ff?

原码

0正1负

反码

符号位不变

其他位取反

补码

反码+1

127

0 111 1111

0 111 1111

0 111 1111

126

0 111 1110

0 111 1110

0 111 1110

125

0 111 1101

0 111 1101

0 111 1101

2

0 000 0010

0 000 0010

0 000 0010

1

0 000 0001

0 000 0001

0 000 0001

0

0 000 0000

0 000 0000

0 000 0000

-0

1 000 0000   |0|

1 111 1111    |127|

-1

1 000 0001   |1|

1 111 1110    |126|

1 111 1111    |127|

-2

1 000 0010   |2|

1 111 1101    |125|

1 111 1110    |126|

-125

1 111 1101   |125|

1 000 0010    |2|

1 111 1101    |125|

-126

1 111 1110   |126|

1 000 0001    |1|

1 000 0010    |2|

-127

1 111 1111   |127|

1 000 0000    |0|

1 000 0001    |1|

-128

1 个字节下

没有原码和反码

1 000 0000    |0|

如何从内存读数据

我们从内存看到一个字节的ff:

如果当成无符号数,读出255

如果当成有符号数,那要顺着表格逆向,反码是ff的是-1

从表格上可以看到:

反码,ff,当成有符号数是-1 ,无符号数是255

           fe,当成有符号数是-2 ,无符号数是254

无符号和有符号之间的互相转换就是+-256

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值