Chinaunix首页 | 论坛 | 博客
  • 博客访问: 251580
  • 博文数量: 62
  • 博客积分: 1547
  • 博客等级: 上尉
  • 技术积分: 672
  • 用 户 组: 普通用户
  • 注册时间: 2006-01-12 23:46
个人简介

music,code,dialog,rest

文章分类

全部博文(62)

文章存档

2020年(2)

2019年(6)

2018年(4)

2017年(5)

2016年(20)

2015年(4)

2014年(2)

2013年(1)

2012年(1)

2011年(1)

2010年(1)

2009年(2)

2007年(10)

2006年(3)

分类: 高性能计算

2013-10-26 08:05:07

最近在搞golang, 还是复习一下带符号整数以及在内存中的表达方式,同时涉及到大小印度的关系。

带符号的整数,拿int8为例 -128~127
int32为例,-4G/2~4G/2

表达正数,比较容易理解,即为正常数二进制表达,
负数表达为取反减一,比如-1,0xff-abs(-1)-1=0xff, -2 0xff-abs(-2)-1=0xfe,以此类推。

大小印度(数的高低位存储次序),与系统类型有关。

如果系统以字节(8bit)为基本单位的系统,是4bit为字节,则高低位组以4bit为单位,int8就比较奇怪了。
以int8,为例,如果是BigEndian,存储时符合人类阅读习惯的。
如果是LittleEndian,存储时和阅读习惯相反。
那-54为例,

但由于,基本单位是8bit字节所以,在内存的表达,并无不同。
内存表达,0xff-abs(-54)-1=0xCA,  如果以BigEndian 方式表达,则即为0xCA
如果以LittleEndian表达,则为0xCA。

如果以4bit字节为单位,Little Endian在内存表达,就要高低位反序表达, 0xAC。在手机系统中,某些特定字段会以此种方式表达。

以Int32,为例,-10920  0xffffffff-abs(-10920)-1=0xFFFFD558, BigEndian 即为0xFFFFD558
LittleEndian为:0x58D5FFFF

20131026 
only for Memo
阅读(474) | 评论(0) | 转发(0) |
0

上一篇:跨平台UDP over SSH Tunnel

下一篇:Motor Theory

给主人留下些什么吧!~~