为什么8位有符号数的取值范围是-128 ~127

                                                         为什么8位有符号数的取值范围是-128 ~127

         计算机存储数据是以什么码(原码,反码,补码)存储的?为什么?带着问题一起探讨。

我们知道,有符号数的取值范围为:-2^(n-1) ~ 2^(n-1)-1 (其中n为数据位数),当n=8时,数据取值范围:-128 ~ 127

对于无符号类型n=8时,数据取值范围为: 0 ~255

正数的原码,反码,补码都相同,

数值                                原码                                         反码                                              补码                          符号位

0                                 0000 0000                                 0000 0000                                    0000 0000                       0

1                                 0000 0001                                 0000 0001                                    0000 0001                       0

...                                 ......                                            ....                                                ...

127                             0111 1111                                   01111 1111                                    0111 1111                        0

 

负数的原码,反码和补码不同,转化原理为:原码-------位取反(符号位不变)------->反码-------------+1----------->补码

数值                                原码                                         反码                                              补码                          符号位

-1                                1000 0001                                 1111 1110                                    1111 1111                        1

-2                                1000 0010                                 1111 1101                                    1111 1110                       1

...                                 ......                                            ....                                                ...

-126                            1111 1110                                  1000 0001                                   1000 0010                      1

-127                            1111 1111                                  1000 0000                                   1000 0001                      1

-128                            xxxx xxxx                                   xxxx xxxx                                    1000 0000                      1

     那么-128补码是多少了,从上面规律可以看出,-128的补码是1000 0000,反码 = 补码 - 1,则反码为0111 1111(最高位(第7位)向第8位借了一位),原码 = 反码取反,则原码为1000 0000(可以认为是-0),此时原码中的1是数据位不是符号位,其值为-128。

计算机中为什么要用补码存储数据?

计算机在做同号相减或异号相加时,若都为原码,计算非常复杂,符号位不能简单加减,需要根据两者的绝对值而定,若为补码,则不需要考虑这些因素,符号位可以直接作加减操作。

实验:

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值