数据存储的那些事2

本文介绍了计算机中整型数据的存储方式,包括原码、反码和补码的概念,以及它们在加减运算中的作用。以-10的整型为例,解释了补码在加法器中如何实现加减统一。此外,讨论了内存块的高低地址端和字节顺序,大端模式与小端模式的区别。还提到了char类型的整型提升,以及有符号和无符号char在内存中的表示和转换规则。
摘要由CSDN通过智能技术生成

Part1:原码,反码,补码 有符号数? 符号位 数值位 整型

那么数据是按照什么规则存放在计算机中的呢?先了解一下,原码,反码,补码。

按照定义是有符号的负数整型原码反码补码才不相同,无符号的和正数三者相同。

第一位是符号位,都是用0表示正,1表示负。而数值位三者皆不相同

Part2:-10 整数 补码 为什么 加法器 加减统一

我们举一个例子int:-10,我们知道一个整数占据4个字节

00000000 00000000 00000000 00000000;空:一般情况不为0

10000000 00000000 00000000 00001010;原码

11111111 11111111 11111111 11110101;反码

11111111 11111111 11111111 11110110;补码

ff ff ff f6;十六进制表示

在计算机中,整型数据是用补码的十六进制来表示的

为什么要这样做?

这就和计算机的结构有关系了,按照我之前的想法,用信号来表示数字的形式,这些数字终究是要拿来使用的,数字之间的基本运算法则,加减运算又是怎样实现的,用我们来想很简单1+1,等于2,在计算机中又是如何加减呢?

加法,在学习计算机组成原理之前,就先知道加法是将两个位置上的信号相加,用一个元件,当二则都为1是则变为0,同时后一位变为1(0)或则0(1)。减法呢1变成0,0变成1吗?这和加法是一样的啊?要如何分辨呢?在那个年代,原码反码补码还没有出现的时候,为了解决这个问题,有人提出了原码反码补码的概念,一堆101010中探究着,现在看来似乎很和合理,知道有这个规则,有点像柏林墙了。补码的存在使得减法可以做加法运算。

Part3:

大小端 内存块 低地址 模式 方式 字节顺序

我们在开辟空间的时候,将开辟的那块空间称之为内存块,按照编号,是有着高地址端和低地址端的,同样数据0x11223344,0x高位…地位。

我们以字节为单位将它放入内存块中,很显然有着多种排序方式,使用最多的两种方式为高地址放低位,低地址放高位和高地址放高位,低地址放低位,两种方式,前者被称为大端模式,后者被称为小端模式。因为其是按照字节来放入的,也就有了字节顺序这个名词。

Part4:

char  %d 整型提升 %u

之前有说到char类型可以到整型里去,但char只占一个字节,当一个整型数据要放到char中时,一样要按32位先转换为补码,只不过最后放入的只有低位的一个字节。当char要以%d输出时,要先进行整型提升,如果首位是1,则进行补1到32位,若是0则补0(只有负整型补的是1,因为它原码反码补码不相同)

%u是无符号整型,在补码转换前进行判断(整型提升之后)

Part5:

char 范围 补码 有无符号 补1000 0000 圆圈+1变号 128

char类型分为有符号和无符号,在内存中也是以补码的形式存放、

有符号的范围是·-128—>127:01111111(127)+1=10000000(-128)

无符号的范围是0à255:00000000(0)à11111111(255)

我们知道在内存中的补码转换回去需要减一,但有符号的·10000000在这里自动会转换会-128。且由于补码的原因,在这里127+1=-128。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值