旅行者手札1:(计组基础&笔面基础&考研基础)从数据类型转换切入简单谈谈补码

基础理论,大佬请绕道

关于数据类型的转换网上其实简单的分类了隐式转换和显式转换,基本上JAVA、C#、C++都遵循这个语法逻辑,如果光讲这个恐怕连培训班出身的人都不如吧,虽然我没上过培训班,但是估计他们也讲过这里面的深层原理。
在这里插入图片描述


1.数据在计算机的存储形式

大家都知道(没错只有你不知道)数据是以二进制存储在计算机的外存、内存、Cache里的。大概是这样子:

关于计算机的存储结构有机会也可以讲一讲,保证不鸽。

如果说是以二进制存储代码,这里就存在问题了,假如说我写一段这样的代码:
在这里插入图片描述

我们期望的是有符号短整形x转换成无符号短整型y,y的值应该为4321,但是实际上却转换成了61215

在这里插入图片描述

但是若将x转换为正数,转换的结果又没有出现奇怪的变化,这是怎么回事呢?

这时候懂哥就要讲了,这不就是补码的问题吗,搞这么多花里胡哨的。

在这里插入图片描述

但是呢,你懂了不代表别人懂啊。
没错,这就是今天的关键词:

补码

回到正题,继续上面的问题。为什么short型 -4321转换成ushort型就变成了一个莫名其妙的数字呢?我们来分析分析。

首先,要明白怎么把十进制数转换成二进制数:

第一点,必须要知道成文规定数字有正负的时候最高位的1和0分别代表负数和正数。
比如-1是11,1是01,-2是110&#x

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值