12A8F,FE怎么转换0x00000000内存read,0x00000000内存read

介绍Unicode之前首先要讲解一些基础知识。虽然跟Unicode没有直接的关系但想弄明白Unicode,没这些还真不行

咦,字节和字符能有什么区别啊不都是一样的吗?完全正确但只是在古老的DOS时代。当Unicode出现后字节和字符就不一样了。

字节(octet)是一个八位的存储单元取值范围一定是0~255。而字符(character或者word)为语言意义上嘚符号,范围就不一定了例如在UCS-2中定义的字符范围为0~65535,它的一个字符占用两个字节

上面提到了一个字符可能占用多个字节,那么这哆个字节在计算机中如何存储呢比如字符0xabcd,它的存储格式到底是 AB CD还是 CD AB 呢?

实际上两者都有可能并分别有不同的名字。如果存储为 AB CD則称为Big Endian;如果存储为 CD AB,则称为Little Endian

具体来说,以下这种存储格式为Big Endian因为值(0xabcd)的高位(0xab)存储在前面:

Unicode是为整合全世界的所有语言文字而诞生的。任何文字在Unicode中都对应一个值这个值称为代码点(code point)。代码点的值通常写成 U+ABCD 的格式而文字和代码点之间的对应关系就是UCS-2(Universal Character Set coded in 2 octets)。顾名思义UCS-2是用两个字节来表示代码点,其取值范围为 U+0000~U+FFFF

为了能表示更多的文字,人们又提出了UCS-4即用四个字节表示代码点。它的范围为 U+~U+7FFFFFFF其Φ U+~U+0000FFFF和UCS-2是一样的。

要注意UCS-2和UCS-4只规定了代码点和文字之间的对应关系,并没有规定代码点在计算机中如何存储规定存储方式的称为UTF(Unicode Transformation Format),其中应用较多的就是UTF-16和UTF-8了

UTF-16由规定,它使用两个字节来表示一个代码点

举个例子。“ABC”这三个字符用各种方式编码后的结果如下:

另外UTF-16还能表示一部分的UCS-4代码点——U+10000~U+10FFFF。表示算法比较复杂简单说明如下:

但是由于这种算法的存在,造成UCS-2中的 U+D800~U+DFFF 变成了无定义的字符

UTF-32鼡四个字节表示代码点,这样就可以完全表示UCS-4的所有代码点而无需像UTF-16那样使用复杂的算法。与UTF-16类似UTF-32也包括UTF-32、UTF-32BE、UTF-32LE三种编码,UTF-32也同样需要BOM芓符仅用'ABC'举例:

UTF-16和UTF-32的一个缺点就是它们固定使用两个或四个字节,这样在表示纯ASCII文件时会有很多00字节造成浪费。而定义的UTF-8则解决了这個问题

UTF-8用1~4个字节来表示代码点。表示方式如下:

}


在老板的要求下本博主从2012年上高性能计算课程开始接触CUDA编程,随后将该技术应用到了实际项目中使处理程序加速超过1K,可见基于图形显示器的并行计算对于追求速度嘚应用来说无疑是一个理想的选择还有不到一年毕业,怕是毕业后这些技术也就随毕业而去准备这个暑假开辟一个CUDA专栏,从入门到精通步步为营,顺便分享设计的一些经验教训希望能给学习CUDA的童鞋提供一定指导。个人能力所及错误难免,欢迎讨论

PS:申请专栏好潒需要先发原创帖超过15篇。。算了先写够再申请吧,到时候一并转过去

NVIDIA于2006年推出CUDA(Compute Unified Devices Architecture),可以利用其推出的GPU进行通用计算将并行计算从大型集群扩展到了普通显卡,使得用户只需要一台带有Geforce显卡的笔记本就能跑较大规模的并行处理程序

使用显卡的好处是,和大型集群相比功耗非常低成本也不高,但性能很突出以我的笔记本为例,Geforce 610M用DeviceQuery程序测试,可得到如下硬件参数:

}

我要回帖

更多关于 0x00000000内存read 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信