首页 > 系统相关 >C语言整型在内存中的存储

C语言整型在内存中的存储

时间:2023-01-28 22:01:00浏览次数:46  
标签:11111111 存储 int 补码 unsigned C语言 内存 原码 整型

前言

对于整型家族里的C语言内置数据结构:char,short,int long来说,都有无符号(unsigned)和有符号(signed)之分。整型家族在内存中都是以补码的形式存在.

一、整型家族

char :unsigned char,signed char

short :unsigned short,unsigned short

int :unsigned int,signed int 

long:unsigned long,signed long

二、什么是原码,反码,补码

整型家族在内存中都是以补码的形式存在,对于正数来说,它的原码,反码,补码相同,对于负数,用以下的例子说明

 int i=-2;

我们把i按照二进制序列写出来就是i的原码(把10进制数字写成32位的二进制数字),原码的首位叫做符号位,首位为0代码整数,首位为1代表负数,因为i是int类型,占四个字节,32个比特位,每一个比特位对应一个二进制数字0或者1,那么i的原码就是:

10000000 00000000 00000000 00000010

对原码除符号位以外的每一位按位取反的到反码,则i的反码为:

11111111 11111111 11111111 11111101

反码加一个二级制的1,得到补码,则i的补码为

11111111 11111111 11111111 11111110

三、存储

1.大端存储

数据的低位存储在内存的高地址中,数据的高位存储在内存的低地址中

2.小端存储

数据的低位存储在内存的低地址中,数据的高位存储在内存的高地址中

3.判断存储模式

int judge()
{
int i=1; //1的二进制补码00000000000000000000000000000001
// 16进制:0x 00000001
return *(char*)&i; //char*类型解引用时,i只能向上访问一个字节,
//俩个16进制位是1个字节,如果是大端存储,返回0,小端存储返回1
}
#include<stdio.h>
int main()
{
int ret=judge();
if(ret==1)
printf("小端“);
else
printf("大端”);
}





标签:11111111,存储,int,补码,unsigned,C语言,内存,原码,整型
From: https://blog.51cto.com/u_15466618/6025177

相关文章

  • C语言基础教程:C语言随机数
    1.随机数概述编写程序过程中,我们经常需要产生一些随机数。随机数在程序中分为两种:真随机数:完全没有规则,无法预测接下来要产生的数。伪随机数:通过一些预先设定好的规则产生......
  • C语言字符
    一、C语言字符​C语言中,凡\AAA表示的字符都是以ASCII码为八进制数AAA的字符这里的A表示任意小于8的数字凡\xAA表示的字符都是以ASCII码为​​十六进制数​​AA的字符这里的A......
  • vs2022创建c语言的dll项目
    1.创建项目  2.创建完成不需要删除自动生成的文件3.修改项目属性右键单击--->c/c++--->常规----->附件包含目录------>这里不用 c/c++----->预处理器------->......
  • 用C语言读取大文件的问题 内存映射
    Windows对文件的读写提供了很丰富的操作手段,如:1.FILE*fp,fstearm;(C/C++)2.CFile,CStdioFile;(MFC)3.CreateFile,ReadFile;(API)在处理一般的文件(文本/非文本),......
  • Dotnet程序的内存与垃圾回收
    都知道程序运行时的变量是放在内存里的,从我们学c++就知道有析构函数 malloc,还有学c#的时候天天什么垃圾回收GC像背八股文样的,但是这个内存究竟能分配多少没有人想过......
  • Dotnet程序的内存与垃圾回收
    都知道程序运行时的变量是放在内存里的,从我们学c++就知道有析构函数 malloc,还有学c#的时候天天什么垃圾回收GC像背八股文样的,但是这个内存究竟能分配多少没有人想过......
  • AndroidBench&eMMC内存测试速度&Android
    提问: 问题:手机eMMC内存,我用AndroidBench/安兔兔/鲁大师测出来的速度很快,而自己写AndroidTool测试的速度确很慢,这是为什么呢?主要信息:   同样是SequenceWrite操作,An......
  • 范围内的完全数输出C语言代码
      #include<stdio.h>intmain(){ inti,j,n,he; i=1; printf("inputanumber:"); scanf("%d",&n); while(i<=n) { j=1;he=0; while(j<i) { if(i%j==0) ......
  • RTree源代码——C语言实现
    RTree源代码——C语言实现cheungmine一、什么是RTree“R树是B树向多维空间发展的另一种形式,它将空间对象按范围划分,每个结点都对应一个区域和一个磁盘页,非叶结点的磁盘页中......
  • SQLServer 2014 内存优化表
    内存优化表是SQLServer2014的新功能,它是可以将表放在内存中,这会明显提升DML性能。关于内存优化表,更多可参考两位大侠的文章:​​SQLServer2014新特性探秘(1)-内存数据库......