C语言中原码,反码,补码的分析

1. 原反补
   (1) 计算机中数都是用补码来存储的,由于无符号类型和有符号的整数补码是其本身,则补码主要为负数设计,
   
(2)  采用补码,可以是负数的符号位参与运算,从而方便的用加法实现减法(CPU中只有加法器)。
      例: 2-1=1; 2的补码为2,-1的补码为1111 1111;之后相加,为
      1 0000 00001 ,最高位符号位溢出舍去,故结果为 0000 0001 即为   1;
  
 (3)   负数(除-128外)的补码求法(注: 只是一种方便求补码的方法,计算机内部并不是这样)  ;  先求其反码 (符号位不变,其他位安位取反);
          再在反码的基础上加1;
   
(4) 二进制数中, 两数的补码之和等于两数和的补码;
   
 (5)  8位无符号可表示范围 0 ~ 255 ;8位有符号表示范围  -128 ~127;   也就是说  1000 0000 ~ 0111 1111(都是补码) 可表示 -128 ~127;1000 0000 (补码)表示 -128;1000 0001 表示-127;(要注意,计算机中都是用补码表示数的);
  
(6 ) 对于-128 的原码 补码分析,
    如果安取反加一的方法,不能求-128的原码,补码。而取反加一只是
    人为的方便原码补码转换的方法,并不是计算机采用的。
    计算机中数的存储和运算都是补码形式,不用考虑什么原码,什么取反加一。只要知道用补码表示哪个有符号数就行,至于怎么表示的计算机内部有算法,但不是什么取反加一。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值