整数存储方式

;整数-5的原码(1字节) 1000 0101

反码            1111 1010  符号位不变其余位按位取反

-5  补码      1111 1011 反码加1得到 补码

求补码还可以 直接绝对值取反加1得到补码 例如:

-5绝对值 0000 0101

1111 1010 取反

-5补码  1111 1011 加1得到补码

求整数-5的绝对值, 补码取反加1得到绝对值

补码   1111 1011

取反   0000 0100

取反加1 0000 0101  = 5

整数存储在intel cpu是按照,小尾方式存储的(也叫本地字节序),网络字节序(大尾存储)

小尾 低字节->低地址

大尾 高字节->低地址

例如:0x12345678

小尾存放是 78 56 34 12

大尾存放是 12 34 56 78

如果把本地字节序整数发送到网络对面的一台机器就需要转换成网络字节序才能发送,

ntohl()来实现从网络字节序到本地字节序的转换。

本地字节序->网络字节序->本地字节序

一个 char 占用1字节 数值表示范围为 有符号的-128 到 127

无符号的数值表示范围为0-255

-1 = 128 论证

128 64 32 16 8 4 2 1

1111 1111 128的补码

-1的补码

1000 0001

1111 1110 + 1

1111 1111

得出 -1 在二进制中等于128

有符号整数 溢出等于最小 也就是说 一个char 等于128 那么溢出等于 -1

-129 溢出 为最大 127

时间: 2024-10-09 17:27:49

整数存储方式的相关文章

float浮点数的二进制存储方式及转换

int和float都是4字节32位表示形式.为什么float的范围大于int? float精度为6-7位.1.66*10^10的数字结果并不是166 0000 0000 指数越大,误差越大. 这些问题,都是浮点数的存储方式造成的. float和double在存储方式上都是遵从IEEE的规范的,float遵从的是IEEE R32.24 ,而double 遵从的是R64.53. 无论是单精度还是双精度在存储中都分为三个部分: 符号位(Sign) : 0代表正,1代表为负 指数位(Exponent):

移码及浮点数在内存中的存储方式

首先说一下十进制的小数怎么转化为二进制的小数,计算机根本就不认识10进制的数据,他只认识0和1,所以,10进制的小数在计算机中是用二进制的小数表示的. 十进制的小数转化为二进制的小数的方法: 可以简单的概括为正序取整,将十进制的小数部分乘以2,然后取整数部分. 例如将0.2转化为二进制的小数,那么0.2*2=0.4,其整数部分是0,所以二进制小数的第一位为0,然后0.4*2=0.8,其整数部分是0,所以二进制小数的第二位为0,然后0.8*2=1.6,其整数部分是1,所以二进制小数的第三位是1,然

C语言中浮点数在内存中的存储方式

关于多字节数据类型在内存中的存储问题 //////////////////////////////////////////////////////////////// int ,short 各自是4.2字节.他们在内存中的存储方式以下举个样例说明. int data = 0xf4f3f2f1; 当中低位存放在编址小的内存单元.高位存放在编址高的内存单元 例如以下: 地址:0x8000      0x8001    0x8002   0x8003 数据:   f1              f2 

js Web存储方式

JSON是数据交互中最常用的一种数据格式. 由于各种语言的语法都不同,在传递数据时,可以将自己语言中的数组.对象等转换为JSON字符串> 传递之后,可以讲JSON字符串,在解析为JSON对象. JSON 对象的用法与js中的对象基本相同,唯一需要区别的是,JSON中的键,必须是字符串. JSON 名称/值对 JSON 数据的书写格式是:名称/值对. eg:   "name" : "1111" JSON 值 JSON 值可以是: ● 数字(整数或浮点数) ● 字

二叉树的存储方式以及递归和非递归的三种遍历方式

树的定义和基本术语 树(Tree)是n(n>=0)个结点的有限集T,T为空时称为空树,否则它满足如下两个条件: (1)有且仅有一个特定的称为根(Root)的结点: (2)其余的结点可分为m(m>=0)个互不相交的子集T1,T2,T3-Tm,其中每个子集又是一棵树,并称其为子树(Subtree). 树形结构应用实例: 1.日常生活:家族谱.行政组织结构:书的目录 2.计算机:资源管理器的文件夹: 编译程序:用树表示源程序的语法结构: 数据库系统:用树组织信息: 分析算法:用树来描述其执行过程:

变量的存储方式

变量分为静态存储方式和动态存储方式 静态存储方式是指在程序运行期间由系统分配固定的存储空间方式 动态存储方式则是在程序运行期间根据需要进行动态的分配存储空间的方式 C语言中每一个变量和函数都有两个属性:数据类型 和 数据的存储类别  存储类别指数据在内存中存储的方式(如静态存和动态存储和动态存储) C的存储类别包括4种:    自动的(auto) , 静态的(static), 寄存器(register),外部的(extern) // auto 变量 和 static变量 #include<std

Android数据的四种存储方式

很清晰的思路,转自Android数据的四种存储方式 作为一个完成的应用程序,数据存储操作是必不可少的.因此,Android系统一共提供了四种数据存储方式.分别是:SharePreference.SQLite.Content Provider和File.由于Android系统中,数据基本都是私有的的,都是存放于“data/data/程序包名”目录下,所以要实现数据共享,正确方式是使用Content Provider. SQLite: SQLite是一个轻量级的数据库,支持基本SQL语法,是常被采用

4 C 语言 数值存储方式 数组

源码 补码 反码 数组定义,初始化,使用,随机数 找最大数,逆置,冒泡排序, scanf 输入字符串 字符串处理 字符串溢出等问题 scanf() gets() puts() fputs() strlen() strcat() strncat() strcmp() strncmp() strchr() strstr() strtok() atoi() atof() atol() C 字符串数组 定义数组 遍历输出数组每个元素的值 //GCC 编译方式: C:\MinGW\project>gcc 

Android的数据存储方式(转)

数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是: 1 使用SharedPreferences存储数据 2 文件存储数据 3 SQLite数据库存储数据 4 使用ContentProvider存储数据 5 网络存储数据 下面将为大家一一详细介绍. 第一种: 使用SharedPreferences存储数据 SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗