温故知新之数据类型二进制表示

本文深入探讨了计算机中负数的表示方法、浮点数的表示与转换、类型扩展和转换机制,详细解释了补码的概念及应用,以及不同数据类型间的转换规则。

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

 

(1)负数在内存中是怎么保存的?
有符号正数的表示方法是最高位代表符号位,0表示正数,1表示负数。比如0000 0011表示3(只用一个字节来示意),

那么-3怎么表示呢?按道理应该是1000 0011,但实际是不是这样的。因为3+(-3)应该=0,看看下面的计算:
  0000 0011
+ 1000 0011
=
  1000 0110
这个结果显示不是0,二是“-6”。因此,计算机需要一种优雅而简单的方式来表示-3,使得+3后能够=0,所以:
  0000 0011
+ ?
=
  0000 0000
把3取反后得到了1111 1100,
 0000 0011
 1111 1100
+
=1111 1111
取反以后得到了全部是1,这也不是0。但是我们知道计算的时候,一旦当最高位溢出的时候,最高位就被丢弃了。全1的

基础上再+1正好把最高位丢弃,其余位全部变成了0。即
 0000 0011
 1111 1100
 0000 0001(+1)
+
=0000 0000
这样就得到了0,所以计算机表示的-3就是1111 1101,即正数二进制取反+1得到的结果,即补码。相反从-3得到+3可通

过-1,取反来得到。

(2)浮点数的表示方法
对于32位的float

符号位(S) 阶码(E)  尾数(M)
   1        8        23
看看123.456是怎么表示的,二进制形式: 1111011.01110100101111001 = 1.11101101110100101111001 * 2^6(右移了6

位)
符号位(S) 阶码(E)  尾数(M)
   0     00000110  11101101110100101111001

(3)类型扩展(赋值)

小类型到大类型(比如char 到 short),最高位如果是1,则自动扩展填充高位位1,这样扩大了的类型的值仍然没有变

,即:
0111 1111 的负数是 1000 0001 , 当一个字节扩展到两个字节时,发现高位位1 ,扩展得到:1111 1111 1000 0001,

这也是一个负数,通过-1并取反可以得到0000 0000 0111 1111,所以通过这样处理,是数学意义上正确的。

大类型到小类型(比如short到char),直接阶段高位,保留低位。

(4)类型转换
比如 float 转换到 int,或者int转换到float 从(1)(2)可以看得出来,int和float在二进制层面的存储机制是不

一样的,但是:
int i = 4
float f = i
f是多少呢?是4.但是按照二进制来展开并进行4字节直接拷贝的话,f肯定不是4. 所以 位模式不同的情况下,编译器会

进行为模式转换,得到正确的结果。那么,再看看下面的情况:

int i = 3;
float f = *(float*)&i;
这是f就不是3了,编译器就不会对int到float进行位模式转换了,而使直接将i的首地址开始直接拷贝4字节到f的内存,

得到的结果不可预知了。

资源下载链接为: https://pan.quark.cn/s/9648a1f24758 这个HTML文件是一个专门设计的网页,适合在告白或纪念日这样的特殊时刻送给女朋友,给她带来惊喜。它通过HTML技术,将普通文字转化为富有情感和创意的表达方式,让数字媒体也能传递深情。HTML(HyperText Markup Language)是构建网页的基础语言,通过标签描述网页结构和内容,让浏览器正确展示页面。在这个特效网页中,开发者可能使用了HTML5的新特性,比如音频、视频、Canvas画布或WebGL图形,来提升视觉效果和交互体验。 原本这个文件可能是基于ASP.NET技术构建的,其扩展名是“.aspx”。ASP.NET是微软开发的一个服务器端Web应用程序框架,支持多种编程语言(如C#或VB.NET)来编写动态网页。但为了在本地直接运行,不依赖服务器,开发者将其转换为纯静态的HTML格式,只需浏览器即可打开查看。 在使用这个HTML特效页时,建议使用Internet Explorer(IE)浏览器,因为一些老的或特定的网页特效可能只在IE上表现正常,尤其是那些依赖ActiveX控件或IE特有功能的页面。不过,由于IE逐渐被淘汰,现代网页可能不再对其进行优化,因此在其他现代浏览器上运行可能会出现问题。 压缩包内的文件“yangyisen0713-7561403-biaobai(html版本)_1598430618”是经过压缩的HTML文件,可能包含图片、CSS样式表和JavaScript脚本等资源。用户需要先解压,然后在浏览器中打开HTML文件,就能看到预设的告白或纪念日特效。 这个项目展示了HTML作为动态和互动内容载体的强大能力,也提醒我们,尽管技术在进步,但有时复古的方式(如使用IE浏览器)仍能唤起怀旧之情。在准备类似的个性化礼物时,掌握基本的HTML和网页制作技巧非常
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值