整形在内存中的存储相关知识归纳

简介: 整形在内存中的存储相关知识归纳

1.原码,反码,补码


要清楚地了解整形在内存中是如何存储的,首先我们要明白原反补码。


a.原码:即数字直接翻译成二进制序列


b.反码:即原码的符号位(最高位)不变,其他按位取反(1变0 ,0变1)


c.补码:反码+1


注意:正数的原码,反码,补码相同!!!


例如: 十进制 (-15)在内存中的存储


原码为:10000000000000000000000000001111


反码为:111111111111111111111111111111110000


补码为:111111111111111111111111111111110001


十进制 (15)在内存中的存储


原码为:00000000000000000000000000001111


反码为:00000000000000000000000000001111


补码为:00000000000000000000000000001111

2.大小端存储


大端存储:即把数据的高字节内容存储在低地址中,把数据的低字节内容存储在高地址中。


小端存储:即把数据的高字节内容存储在高地址中,把数据的低字节内容存储在低地址中。


例如:int a=0x11223344;(16进制表示)


大端存储:


低地址  11  22  33  44   高地址


小端存储:


低地址  44  33  22  11   高地址

3.写一个能判断大小端存储的代码


#include<stdio.h>
char check()
{
  int a = 1;       //用1易于判断 其大端字节排序为 00 00 00 01   小端字节排序为 01 00 00 00 
  char* p = (char*)&a;  //所以我们只需判断第一个字节是1还是0即可 char*可向后访问一个字节 将&a强制类型转换
  return *p;
}
int main()
{
  if (check())
  {
    printf("小端\n");
  }
  else
  {
    printf("大端\n");
  }
  return 0;
}


目录
相关文章
|
5天前
|
存储 Java 程序员
Java面试题:方法区在JVM中存储什么内容?它与堆内存有何不同?
Java面试题:方法区在JVM中存储什么内容?它与堆内存有何不同?
26 10
|
23小时前
|
存储 分布式计算 Hadoop
HadoopCPU、内存、存储限制
【7月更文挑战第13天】
23 14
|
21天前
|
存储 Java C++
Java虚拟机(JVM)管理内存划分为多个区域:程序计数器记录线程执行位置;虚拟机栈存储线程私有数据
Java虚拟机(JVM)管理内存划分为多个区域:程序计数器记录线程执行位置;虚拟机栈存储线程私有数据,如局部变量和操作数;本地方法栈支持native方法;堆存放所有线程的对象实例,由垃圾回收管理;方法区(在Java 8后变为元空间)存储类信息和常量;运行时常量池是方法区一部分,保存符号引用和常量;直接内存非JVM规范定义,手动管理,通过Buffer类使用。Java 8后,永久代被元空间取代,G1成为默认GC。
24 2
|
24天前
|
存储
数据在内存中的存储(了解数据在内存中的存储规则,看这一篇就够了!)
数据在内存中的存储(了解数据在内存中的存储规则,看这一篇就够了!)
|
5天前
|
存储 设计模式 监控
Java面试题:如何在不牺牲性能的前提下,实现一个线程安全的单例模式?如何在生产者-消费者模式中平衡生产和消费的速度?Java内存模型规定了变量在内存中的存储和线程间的交互规则
Java面试题:如何在不牺牲性能的前提下,实现一个线程安全的单例模式?如何在生产者-消费者模式中平衡生产和消费的速度?Java内存模型规定了变量在内存中的存储和线程间的交互规则
15 0
|
14天前
|
存储
|
20天前
|
存储 C语言
【C语言进阶篇】整数在内存的存储——原码、反码、补码
【C语言进阶篇】整数在内存的存储——原码、反码、补码
|
24天前
|
存储 C语言
C语言----数据在内存中的存储(2)
C语言----数据在内存中的存储
22 0
|
24天前
|
存储 C语言
C语言----数据在内存中的存储(1)
C语言----数据在内存中的存储
11 0