• 整型与字节转换关系


    一、基本概念

    :我们常说的bit,位就是传说中提到的计算机中的数据存储最小数据单位:说白了就是0或者1;计算机内存中的存储都是01这两个东西。在计算机中的二进制数系统中,位,简记为b,也称为比特,每个0或1就是一个位(bit)。计算机中的CPU位数指的是CPU一次能处理的最大位数。(1和0是计算机储存二进制的基本单位,包括现在你在电脑上看到的所有一切都是由1和0两个数组成的,一个即是一个位,8位(bit)一个字节,我们在电脑中看到的图像视频等都是计算机通过对储存器中无数个1和0的计算得来的。)

    字节:英文单词:(byte),byte是存储空间的基本计量单位。1byte 存1个英文字母,2个byte存一个汉字。规定上是1个字节等于8个比特(1Byte = 8bit)。

    :由若干个字节构成,字的位数叫做字长,不同档次的机器有不同的字长。例如一台8位机,它的1个字就等于1个字节,字长为8位。如果是一台16位机,那么,它的1个字就由2个字节构成,字长为16位。如果是一台32位机,那么,它的1个字就由4个字节构成,字长为32位,字是计算机进行数据处理和运算的单位。由此可见,计算机的字长决定了其CPU一次操作处理实际位数的多少,即:计算机的字长越大,其性能越好。

    ps:

    1、二进制数系统中,位简记为b,也称为比特,每个二进制数字0或1就是一个位(bit)。位是数据存储的最小单位,其中8 bit 就称为一个字节(Byte)。计算机中的CPU位数指的是CPU一次能处理的最大位数。例如32位计算机的CPU一个机器周期内可以处理32位二进制数据的计算。

    2、简单的说32位的CPU的数据线、地址线、控制线都是32位的,即CPU一次能够传送、处理32位的二进制数,所以理论上它能够寻址的范围是2的32次方,即4个GB,所以即使你的电脑能够安装8个GB的内存,系统也只能使用前4个GB的内存,而另4个GB的内存电脑就当没有。当然由于32位XP的限制,32位的机器也只能使用3个GB多点的内存。同理64位的CPU的数据线等是64位的,即CPU一次能够并行处理64位的二进制数,所以理论上它能寻址的范围为2的64次方,比32位的大得多多多,总之是N多个GB。只要系统、主板等支持,你的电脑可以装很大的内存。(当然电脑能够使用多大的内存,还要看主板北桥芯片,内存控制器,内存插槽数量等综合来看。)所以简单的看64位的系统要比32位的系统在单位时间内能够处理的数据更多,带宽更大,处理的速度更快。64位的CPU现在是向下兼容的,64位CPU组成的系统,能够装64位的操作系统,也能装32位的操作系统。当然由于目前大多数人使用的软件还都是32位的,因此并不能完全发挥出64位CPU的性能。

    二、位、字、字节与KB等的转换关系

    1b (bit 位) 1个位能存储就是0或1

    1B(Byte字节)=8bit,

    1KB (Kilobyte 千字节)=1024B,

    1MB (Mega byte 兆字节 简称“兆”)=1024KB,

    1GB (Giga byte 吉字节 又称“千兆”)=1024MB,

    1TB (Tera byte 万亿字节 太字节)=1024GB,其中1024=2^10 ( 2 的10次方),

    1PB(Peta byte 千万亿字节 拍字节)=1024TB,

    1EB(Exa byte 百亿亿字节 艾字节)=1024PB,

    1ZB (Zetta byte 十万亿亿字节 泽字节)= 1024 EB,

    1YB (Yotta byte 一亿亿亿字节 尧字节)= 1024 ZB,

    1BB (Bronto byte 一千亿亿亿字节)= 1024 YB,

    1NB(Nona byte )= 1024BB,

    1DB(Dogga byte)= 1024NB

    三、举例

    例1:

    根据GBK编码来说,两个字节一个汉字。
    1Bit=1/16个字
    所以16bit=1个汉字

    例2:

    1、Int32 //等于int, 占4个字节. 取值范围:-2147483648 2147483647

    2、Int8 //等于byte,

    3、Int16 //等于short, 占2个字节. -32768 32767

    4、Int64 //等于long, 占8个字节. -9223372036854775808 9223372036854775807

    解答:下面我们来计算一下int32

    首先int32范围为-2147483648~2147483647 此处的单位就是位

    1个字节占8位 4个字节就是32位 按照2进制取值就是2^31=2147483648

    因为int32是无符号类型所以其取值范围为-231~231-1(-2的31次方到2的31次方-1)

    也就是-2147483648 2147483647

    如果是无符号类型unit32,则其的取值范围就是2^32-1(2的32次方-1)=0~4294967295

    疑问:很多人好奇为什么要减1呢?因为计算机语言中,是由0开始的。

  • 相关阅读:
    python经常使用的十进制、16进制、字符串、字节串之间的转换(长期更新帖)
    axis2开发webservice之编写Axis2模块(Module)
    Android中的动画具体解释系列【2】——飞舞的蝴蝶
    湘潭邀请赛——Alice and Bob
    ZOJ 2859 二维线段树
    jsp导出身份证到excel时候格式不正确
    Android 自己定义View须要重写ondraw()等方法
    聚合类新闻client产品功能点详情分析
    vi下对齐代码的操作
    最新研发的基于Java的高速开发平台
  • 原文地址:https://www.cnblogs.com/forever521Lee/p/10690824.html
Copyright © 2020-2023  润新知