每日一学--深究字节与字符

转载自:http://www.cnblogs.com/strivers/archive/2011/01/04/1925826.html

package com.suypower.chengyu.test;

public class ByteTest {

 /**
  * byte 8 bits -128 - + 127
  * 1 bit = 1 二进制数据
  * 1 byte = 8 bit
  * 1 字母 = 1 byte = 8 bit(位)
  * 1 汉字 = 2 byte = 16 bit
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  byte b1 = 127;
  byte b2 = -128;
  byte b3 = ‘a‘;
  byte b4 = ‘A‘; // 一个字母 = 1 byte = 8 bit
//  byte b5 =‘aa‘;  这就错了
//  byte b6 =‘中‘; 这就错了 一个汉字 2个字节 16bit
  short s1 = ‘啊‘; // 一个汉字 2个字节 16bit short 是 16 bit位的
//  short s2 = ‘汉字‘;  // 2个汉字 4个字节 32 bit int 是32 bit的
//  int i1 = ‘汉字‘;  但是 int 是数字类型的 , char 是 16 bit的 = 2 byte = 一个汉字
  char c1 = ‘汗‘;
//  byte 转换 string
  String string = "中文";
  byte by[] = string.getBytes();
  String str = new String(by);
  System.out.println("str="+str);
 }

}

==================================================================================

1 bit     = 1  二进制数据
        1 byte  = 8  bit
        1 字母 = 1  byte = 8 bit
        1 汉字 = 2  byte = 16 bit

1. bit:位
    一个二进制数据0或1,是1bit;

2. byte:字节
    存储空间的基本计量单位,如:MySQL中定义 VARCHAR(45)  即是指 45个字节;
    1 byte = 8 bit

3. 一个英文字符占一个字节;
    1 字母 = 1 byte = 8 bit

4. 一个汉字占2个字节;
    1 汉字 = 2 byte = 16 bit

5. 标点符号
    A>.  汉字输入状态下,默认为全角输入方式;
    B>.  英文输入状态下,默认为半角输入方式;

C>.  全角输入方式下,标点符号占2字节;
    D>.  半角输入方式下,标点符号占1字节;

故:汉字输入状态下的字符,占2个字节 (但不排除,自己更改了默认设置);
        英文输入状态下的字符,占1个字节 (但不排除,自己更改了默认设置);

老美在发明电脑时,肯定以自己的英文字母--即他们自认为的字符为最小的存储计量单位,于是也就有了不规范的1字符=1byte, 岂不知还有我们伟大的汉字计量单位,NND,一个汉字也是一个字符,我们的1汉字字符就等于2byte,后来,他们可能意识到这个尴尬的问题,于是又标榜为:一个字母为一个标准字符,去球吧,谁整天没事说个字符还“标准字符”,所以啊,个人认为:字符,不能用于标准的计量单位。

转载自:http://blog.csdn.net/andyzhaojianhui/article/details/53785656

字符和字节的进阶

(一)“字节”的定义

字节(Byte)是一种计量单位,表示数据量多少,它是计算机信息技术用于计量存储容量的一种计量单位。

(二)“字符”的定义

字符是指计算机中使用的文字和符号,比如1、2、3、A、B、C、~!·#¥%……—*()——+、等等。

(三)“字节”与“字符”

它们完全不是一个位面的概念,所以两者之间没有“区别”这个说法。不同编码里,字符和字节的对应关系不同:

ASCII码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。一个二进制数字序列,在计算机中作为一个数字单元,一般为8位二进制数,换算为十进制。最小值0,最大值255。

UTF-8编码中,一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。

Unicode编码中,一个英文等于两个字节,一个中文(含繁体)等于两个字节。

符号:英文标点占一个字节,中文标点占两个字节。举例:英文句号“.”占1个字节的大小,中文句号“。”占2个字节的大小。

UTF-16编码中,一个英文字母字符或一个汉字字符存储都需要2个字节(Unicode扩展区的一些汉字存储需要4个字节)。

UTF-32编码中,世界上任何字符的存储都需要4个字节。

时间: 2024-08-01 11:50:02

每日一学--深究字节与字符的相关文章

每日一学--bit、byte、位、字节、汉字、字符

转载自:http://www.cnblogs.com/strivers/archive/2011/01/04/1925826.html package com.suypower.chengyu.test; public class ByteTest { /** * byte 8 bits -128 - + 127 * 1 bit = 1 二进制数据 * 1 byte = 8 bit * 1 字母 = 1 byte = 8 bit(位) * 1 汉字 = 2 byte = 16 bit */ pu

字节和字符的区别

字节和字符的定义在这里我就不写了,百度上有好多大家可以参考一下. 在学Java IO的时候,涉及到字节流和字符流,我就很郁闷字节数组里存储的数据到底是什么样子的...好多次和男朋友讨论到这个概念,我还是糊里糊涂的,最后也不好意思问他了...嘿嘿嘿..自己写了个小程序测试一下,对字节和字符的理解或许有帮助: public class BAndC { public static void main(String[] args) { String data = "Hello"; byte[]

字节和字符的差别

字节和字符的定义在这里我就不写了.百度上有好多大家能够參考一下. 在学Java IO的时候,涉及到字节流和字符流,我就非常郁闷字节数组里存储的数据究竟是什么样子的. .. 好多次和男朋友讨论到这个概念.我还是糊里糊涂的.最后也不好意思问他了. .. 嘿嘿嘿..自己写了个小程序測试一下,对字节和字符的理解也许有帮助: public class BAndC { public static void main(String[] args) { String data = "Hello"; b

解惑:字、位、字节、字符、字符串。

1.字 就是我们所说的文字,如汉字,占2个字节(字不是计算机处理的数据,至少不是直接处理) 2.位(bit,比特) 这才是计算机中的最小数据单位,二进制数,如 一个0或1,这样的数据就叫一位 3.字节(byte) 是一种数据类型,一般 一个字节=8位, 字节是指一小组相邻的二进制数码(位).通常是8位作为一个字节.它是构成信息的一个小单位,并作为一个整体来参加操作 (所以,尽管最小的单位是位bit,但最常用的单位是字节byte 8位) 4.字符 字符人们使用的记号,抽象意义上的一个符号. '1'

字节和字符的区别 【转】

(一)"字节"的定义字节(Byte)是一种计量单位,表示数据量多少,它是计算机信息技术用于计量存储容量的一种计量单位. (二)"字符"的定义字符是指计算机中使用的文字和符号,比如1.2.3.A.B.C.~!·#¥%---*()--+.等等. (三)"字节"与"字符"它们完全不是一个位面的概念,所以两者之间没有"区别"这个说法.不同编码里,字符和字节的对应关系不同:①ASCII码中,一个英文字母(不分大小写)

1161: 零起点学算法68——删除字符(未AC)

1161: 零起点学算法68--删除字符 Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lldSubmitted: 1412  Accepted: 479[Submit][Status][Web Board] Description 从键盘输入任意一个字符串和一个字符,要求从该字符串中删除所有该字符. Input 输入有多组测试数据. 每组两行,第一行是字符串(字符串至少还有一个字符,不多于100个),第二行是一个字符 Ou

转 ORACLE数据库它可以存储 中文 字节或字符

一:因为ORACLE数据库它可以存储字节或字符,例如 CHAR(12 BYTE) CHAR(12 CHAR)的意义是不同的.一般来说默认是存储字节,你可以查看数据库参数NLS_LENGTH_SEMANTICS的值. 1: SQL> show parameter nls_length_semantics; 2: 3: NAME                          TYPE        VALUE 4: ------------------------- ----------- --

Java IO 转换流 字节转字符流

Java IO 转换流 字节转字符流 @author ixenos 字节流 输入字节流:---------| InputStream 所有输入字节流的基类. 抽象类.------------| FileInputStream 读取文件的输入字节流.------------| BufferedInputStream 缓冲输入字节流. 该类内部其实就是维护了一个8kb(8192b)字节数组而已. 该类出现的目的是为了提高读取文件数据的效率. 输出字节流:---------| OutputStream

C#中流,字节,字符,字符串

首先要明白它们本身是由什么组成的: 流:二进制 字节:无符号整数 字符:Unicode编码字符 字符串:多个Unicode编码字符 那么在.net下它们之间如何转化呢? 一般是遵守以下规则: 流->字节数组->字符数组->字符串 下面就来具体谈谈转化的语法: 流->字节数组 MemoryStream ms = new MemoryStream(); byte[] buffer = new byte[ms.Length]; ms.Read(buffer, 0, (int)ms.Len