整型数据类型存储空间大小,整型数据的存储形式
32位整数存储器vs环境中的存储和操作
存储方式和顺序对于整数类型,内存中存储的数据实际上是补码,而顺序是由机器的大小决定的。
存储方式原代码的补码是什么?整数在计算机中有什么用?有三种二进制表示,即原码、补码和补码。这三种表示方法有两部分:符号位和数值位。“正”的符号位为0,“负”的符号位为1。正数的原、逆、补数都是一样的。负整数的三种表示是不同的。
原码补码的转换规则是将数值直接翻译成正负数形式的二进制即可得到原码。逆码会保持原码的符号位不变,其他位逐位反转得到逆码。
补体由补体1获得。
big-endian是什么顺序:Big-endian(存储)模式是指数据的低位存储在内存的高位地址,而数据的高位存储在内存的低位地址;小(存储)模式是指数据的低位存储在内存的低位地址,而数据的高位存储在内存的高位地址。
为什么会有大小和结束的顺序?这是因为在计算机系统中,我们以字节为单位,每个地址单位对应一个字节,一个字节就是8 bit。但是在C语言中,除了8-8位的char,还有大于8位的数据。所以,内存中的一个地址单元对应一个字节。大于一个字节的数据应该以什么顺序存储在内存中?以十六进制数字0x11223344为例:
运算整数的分类//整数族
茶
无符号字符
有符号字符
短的
无符号短整型[int]
有符号短[int]
(同Internationalorganizations)国际组织
无符号整数
有符号整数
长的
无符号长整型[int]
有符号long [int]各种整数的取值范围
这里要知道有符号整数和无符号整数的取值范围是不一样的。
无符号字符的取值范围是0-255,
signchar的取值范围是-128-127,
但是,char是有符号的还是无符号的,C语言标准没有定义,由编译器决定。在vs中,char等同于有符号的char。
这里有一个例子来说明如何获得值域类型:
示例# includesdio.h
//vs环境
int main()
{
char a=-1;
有符号char b=-1;
无符号字符c=-1;
printf(a=%d,b=%d,c=%d ,a,b,c);
返回0;
} A和B都属于带符号的char类型。要在A和B中存储-1,需要截断-1的二进制位。截断后,逆码是11111111,
存放在A和b中,如果要打印成有符号整数类型(%d),需要整数提升。
(可以在C语言专栏【整数提升】(https://blog.csdn.net/aen _ hen/article/details/126374244)看到另一篇博客)
最终结果还是-1。
而c是无符号的char类型,截断后的逆代码是11111111,要打印成有符号的整数,所以对整数进行了改进。
将获得的补码转换成原始码000000000000000000000111111。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。