• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
gddzkw
博客园    首页    新随笔    联系   管理    订阅  订阅
整形提升

什么叫做整形提升:

         CPU在运算时操作字长是按照整形(int)来进行运算的。依次要把参与运算的char型和short int转化成int型进行计算。

        即使两个char型相加也需先转化为CPU内的标准形式,在进行计算。

1、隐式类型转换(整形提升)【针对char 、short int类型】

 

 

计算形式为char型,输出形式为格式化十进制输出形式,这就需要进行整形提升,那么如何进行提升呢?

#整形提升是按照变量数据类型的符号位来进行提升的。

 

 在32位环境下,有2的32次方个寻址路线。因为a、b定义为char型,只占1个字节,1字节=8bit,

 

    以符号位进行提升:

 

 

 

 提升后,得到相加的结果,c的定义类型为char型,因此只能截取8个bit位

    得到:c=10000010

但输出是以格式化十进制整形输出,因此需要对c进行提升。逻辑顺序,a和b的值相加赋给了c,因此c的内存存了a和b的和。

然而CPU都是以补码的形式进行储存的,而提升是对原码进行提升的。这块还绕了一圈。

 

 有意思的是:整形提升是根据符号位来提升的(符号位不变)、而原反补码的转化符号位也是不变的。

得到原码:%d输出,32位全要,但第一个 1 是符号位(0正1负)

得到:c=-126

 

posted on 2021-10-03 20:35  又菜又爱玩丶  阅读(169)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3