内存0.1---内存里数据的表示形式以及进制转换

操作系统的位数与内存的关系: 

32位操作系统是指系统的寻址空间是2的32次方,即4G,也就是说32位操作系统只支持最大4G的内存,64位操作系统寻址空间理论上为2的64次方,即17179869184G,目前最大支持128G,主流主板最大容量为16G。

内存的概念:

内存存储的是二进制数,可以将内存抽象为开关。一个开关对应两应两种状态,一种状态对应1,一种状态对应0。把八个开关放到一间房子里面,这间房子就相当于一个字节。房间的门牌号相当于地址。无数个房间堆叠且,形成了摩天大厦,大厦就相当于内存。

10这个十进制数字占用4个房间,有32个开关。

存储单位的转换:

8bit=1Byte

1024Byte=1KByte

1024KByte=1MByte

1024MByte=1GByte

1024GByte=1TByte

进制的转换:

二级制: 1+1=10   (逢二进一)

八进制:1+7=10    (逢八进一)    沟通二进制与16进制

十进制:9+1=10    (逢十进一)

十六进制:F+1=10  (逢16进一)   内存地址用16进制表示

十进制-》二进制 :  倒除法,余数逆序

示例:10(十进制)-》1010(二进制)

2|      10

2 |     5               余数为0

2|      2          余数为1

2|     1      余数为0

| 0       余数为1

二进制-》十进制

当前的数字乘以2的位数次方,最后相加

例如:1010(二进制)

0*2^0+1*2^1+0*2^2+1*2^3=10(十进制)

八进制-》二进制

【一转三位】八进制的一位转换为二进制读的3位,转换时用十进制转换

456(八进制)-》100 101 110 (二进制)

二进制-》八进制

【三位一取】三个二进制数相当于一位八进制,从低位开始取,高位不够加0

101 110(二进制)-》56(八进制)

十六机制-》二级制

【一转四位】十六机制的以为相当于二进制的四位,转换时用十进制转换

FED->1111 1110 1101(二进制)

二进制-》十六进制:

【四位一取】四位二进制相当于一位十六进制,从低位开始取,高位不足补0

1010 1111 1101(二进制)-》AFD(十六进制)

内存里数据的表示形式及原因:

计算机存储数据的流程:先开辟内存空间,再存储数据。即算机以字节为单位开辟空间。

1010这个数占4个字节,前面填充28个0,内存存放的形式是:0000000000000000000000000001010

存放的最高位表示符号:0表示正数  1表示负数

+1:00000000000000000000000000000001

-1:10000000000000000000000000000001

10000000000000000000000000000010

若-1由 10000000000000000000000000000001表示

那-1+1=-2,明显不对,因此-1不能由10000000000000000000000000000001表示

引出原码,反码,补码的概念

原码:规定了字节数,写明了符号位,得到了数据的原码

反码:正数的反码是其自己,负数的反码是其原码的符号位不变,其他位取反

补码:正数的补码是其自己,负数的补码是其反码加1

计算机中的所有数都是以补码的形式存储的

-1的原码:10000000000000000000000000000001

-1的反码:1111111111111111111111111111111110

-1的补码:1111111111111111111111111111111111

+1的原码=反码=补码=00000000000000000000000000000001

因此+1+(-1)就是:

+1:00000000000000000000000000000001

-1:11111111111111111111111111111111111

00000000000000000000000000000000

结果很显然就是0,因此用补码的形式表示所有数字是可行的

原文地址:https://www.cnblogs.com/yulianggo/p/9183341.html

时间: 2024-08-03 00:01:58

内存0.1---内存里数据的表示形式以及进制转换的相关文章

JavaSE学习(二):进制转换-数据类型转换-Java运算符

一.进制转换 1.1 其他进制转十进制(以十六进制为例): 十六进制范围:0-9, A-F对应数字10-15 2A7E(16)  =  14*16(0) +7*16(1) + 10*16(2)  + 2*16(3) =  10878(10) 1.2 十进制转二进制:将十进制数除以2,取余数,将最后一位余数排在第一位,倒数第二位的数排在第二位,依次排列,构成的01数字串即为表示该十进制数的二进制数. 总结:十进制%二进制 余数 0-1(Java中符号 "%"表示取余),逆序排列. (图片

C# 10进制与62进制互转 数据大无压力 10进制与72,96进制任意转换

因项目需要把10进制的ID转换成62进制的字符串,分享给别人. 于是在网上搜索了很多算法,但都未能满足需要,项目里的ID是固定算法算出来的18~20位数据的ulong整型. 如:17223472272256398107,509488277152981097. 网上找的算法问题在于,将ulong的值转换62进制的字符串后,再将字符串转换成ulong值时会不准确. 于是各种测试与假象问题所在,最后确定算法确实没有问题,于是开始怀疑数据类型的问题. 果然,原因是使用了Math.Pow(double x

【ACM】大数据+任意进制转换 jobdu 1080

[九度OJ] 1080 进制转换 题目描述: 将M进制的数X转换为N进制的数输出. 输入: 输入的第一行包括两个整数:M和N(2<=M,N<=36).下面的一行输入一个数X,X是M进制的数,现在要求你将M进制的数X转换成N进制的数输出. 输出: 输出X的N进制表示的数. 样例输入: 16 10 F 样例输出: 15 提示: 输入时字母部分为大写,输出时为小写,并且有大数据. 这题考察的比较综合,进制转换+大数据 很久没有做ACM的题目了,且拿这个练练手,大整数模板是用的王道论坛的模板-贴出来备

Java基础复习之一篇:关健字,标识符,注释,常量,进制转换,变量,数据类型,数据类型转换

1.关健字 1.1.被Java语言赋予特定意义的单词(如:class,interface,public ,static) 1.2.全部是小写 1.3.注意事项(goto和const作为关健字保留起来) 2.标识符 2.1.给类,接口,方法,变量起名字的字符 2.2.组成规则(A:英文大小写,B:数据,C:$ _) 2.3.注意事项(不能为数字开头,不能是java中的关健字,区分大小写) 2.4.常见的命名规则(见名知意) A:包   全部是小写 单级包:小写 如:peng,com 多级包:小写

2 Java基础语法(keyword,标识符,凝视,常量,进制转换,变量,数据类型,数据类型转换)

1:keyword(掌握) (1)被Java语言赋予特定含义的单词 (2)特点: 所有小写. (3)注意事项: A:goto和const作为保留字存在. B:类似于Notepad++这种高级记事本会对keyword有特殊颜色标记 2:标识符(掌握) (1)就是给类,接口.方法,变量等起名字的字符序列 (2)组成规则: A:英文大写和小写字母 B:数字 C:$和_ (3)注意事项: A:不能以数字开头 B:不能是java中的keyword C:区分大写和小写 (4)常见的命名规则(见名知意) A:

数据概述与进制转换

什么是数据 数据是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的原始素材. 数据是信息的表现形式和载体,信息是数据的内涵.数据本身没有意义,数据只有对实体行为产生影响时才成为信息. 计算机中的数据按照表现形式可分为两类: 数字数据:由阿拉伯数字符号构成的数据.如各种统计或量测数据 模拟数据:在某个区间内产生的连续值,如视频.图像.声音等 在计算机系统中,数据以二进制信息单元0.1的形式表示. 进制及进制转换 1.计算机采用二进制的主要原因 技术实现简单 简化运算规则 适

2.5 数据类型转换与进制转换

2.5.1    数值类型转换 源类型 目标类型 转换方法 示例 bool.byte.char.double.decimal.float.long.short.sbyte.string.uint.ulong.ushort int Convert.ToInt32(Type value) int num = Convert.ToInt32("30"); string int int.Parse(string s) int num = int.Parse("20"); s

SQL SERVER 自定义函数 整数转成指定长度的16进制 转换成指定长度的16进制 不足补0

最近做项目扩展的时候,遇到问题就是将整型转换成指定长度的16进制 刚开始就是直接使用 cast(12 as varbinary(4))但是发现这个不能解决我的问题 所以就上网搜了一下,然后改了改,下面就是函数: 1 Create Function IntToHexLength(@Num int,@HxLength int) 2 returns varchar(16) 3 as 4 begin 5 declare @Mods int,@res varchar(16),@Length int 6 s

16进制转换,bytes数据和str数据转换

16进制与二进制转换 #前缀为OX,后缀为H就是16进制数据 原文地址:http://blog.51cto.com/12992048/2173536