java中有8种基本数据类型,byte,short,int,long,float,double,boolean 
byte用1个字节表示,占8比特,取值范围 负2的7次方至正2的7次方减1 二进制00000000  第一位0如果为0表示正数 1表示负数 
short用2个字节表示,占16比特,取值范围  负2的15次方至正2的15次方减1  二进制00000000 00000000  第一位0如果为0表示正数 1表示负数 
int用4个字节表示,占32比特,取值范围  负2的31次方至正2的31次方减1  二进制00000000 00000000 00000000 00000000 第一位0如果为0表示正数 1表示负数 
long用8个字节表示,占64比特,取值范围  负2的15次方至正2的15次方减1  二进制00000000 00000000 00000000 00000000 00000000 00000000  00000000 00000000     第一位0如果为0表示正数 1表示负数 
float用4个字节表示,占32比特 
double用8个字节表示,占64比特 
以上7种都属有符号数

char用2个字节表示,占16比特 00000000 00000000 2的16次方 0至65536

boolean只有2个值,TRUE和FALSE 
java自动转型方向 
         char->int->long->float->double 
byte->short->int->long->float->double

JAVA中的字节存的是补码 
举个例子 
"中"字 
以GB2312中的编码为D6D0  (GB2312编码表可参看http://ash.jp/code/cn/gb2312tbl.htm) 
code  +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F 
D6A0     帧 症 郑 证 芝 枝 支 吱 蜘 知 肢 脂 汁 之 织 
D6B0  职 直 植 殖 执 值 侄 址 指 止 趾 只 旨 纸 志 挚 
D6C0  掷 至 致 置 帜 峙 制 智 秩 稚 质 炙 痔 滞 治 窒 
D6D0  中 盅 忠 钟 衷 终 种 肿 重 仲 众 舟 周 州 洲 诌 
D6E0  粥 轴 肘 帚 咒 皱 宙 昼 骤 珠 株 蛛 朱 猪 诸 诛 
D6F0  逐 竹 烛 煮 拄 瞩 嘱 主 著 柱 助 蛀 贮 铸 筑

下面让我们来看一下JAVA里 “中”字取出来的字节是什么 
public class Test { 
public static void main(String args[]){ 
  String a="中"; 
  byte ar[]; 
  try { 
   ar = a.getBytes("GB2312"); 
   for(int i=0;i<ar.length;i++){ 
    System.out.println(ar[i]); 
   } 
  } catch (UnsupportedEncodingException e) { 
   // TODO Auto-generated catch block 
   e.printStackTrace(); 
  } 
  
} 
} 
输出结果为 
-42 
-48 
让我们来看一下如何根据编码表算出这两个数字 
首先明白编码表的表示为16进制 
D6二进制表示为 11010110 最高为符号位1表示负数 0表示正数 
D0二进制表示为 11010000 最高为符号位1表示负数 0表示正数 
让我们来看一下D6如何换算出-42 
将D6的二进制首先换算为10进制,二进制换算为10进制例: 
二进制数转换为十进制数 
二进制数第0位的权值是2的0次方,第1位的权值是2的1次方……

所以,设有一个二进制数:0110 0100,转换为10进制为:

下面是竖式:

 

0110 0100 换算成 十进制

 

第0位 0 * 20  =  0

第1位 0 * 21  =  0

第2位 1 * 22  =  4

第3位 0 * 23  =  0

第4位 0 * 24  =  0

第5位 1 * 25  = 32

第6位 1 * 26  = 64

第7位 0 * 27  =  0     +

---------------------------

100

 

用横式计算为:

0 * 20 + 0 * 21 + 1 * 22 + 1 * 23 + 0 * 24 + 1 * 25 + 1 * 26 + 0 * 27 = 100

0乘以多少都是0,所以我们也可以直接跳过值为0的位:

1 * 22 + 1 * 23 +  1 * 25 + 1 * 26 = 100

 D6二进制表示为 -1010110

求反码为-0101001 
反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。

取反操作指:原为1,得0;原为0,得1。(1变0; 0变1)

再求出补码-0101010

补码:反码加1称为补码。

也就是说,要得到一个数的补码,先得到反码,然后将反码加上1,所得数称为补码。

结果为 -0101010=-(25 + 23 +21)=-42

其它一个相同的计算方式

根据GB2312编码表求汉字字节的更多相关文章

  1. 转:Unicode汉字编码表

    转自:http://blog.csdn.net/huangxy10/article/details/10012119 Unicode汉字编码表 1 Unicode编码表  Unicode只有一个字符集 ...

  2. Unicode其实是Latin1的扩展。只有一个低字节的Uncode字符其实就是Latin1字符——附各种字符编码表及转换表

    一.概念 1,ASCII             ASCII(American Standard Code for Information Interchange),中文名称为美国信息交换标准代码.是 ...

  3. [转载]GB2312简体中文编码表

    编码表源地址:http://www.knowsky.com/resource/gb2312tbl.htm编码在线查询:http://www.qqxiuzi.cn/bianma/zifuji.phpGB ...

  4. UTF-8,Unicode,GBK,希腊字母读法,ASCII码表,HTTP错误码,URL编码表,HTML特殊字符,汉字编码简明对照表

    UNICODE,GBK,UTF-8区别 UNICODE,GBK,UTF-8区别    简单来说,unicode,gbk和大五码就是编码的值,而utf-8,uft-16之类就是这个值的表现形式.而前面那 ...

  5. java IO之 字符流 (字符流 = 字节流 + 编码表) 装饰器模式

    字符流 计算机并不区分二进制文件与文本文件.所有的文件都是以二进制形式来存储的,因此, 从本质上说,所有的文件都是二进制文件.所以字符流是建立在字节流之上的,它能够提供字符 层次的编码和解码.列如,在 ...

  6. linkList hashSet ArrayList IO 序列化 1.1.瞬态transient .字符编码表 Properties

      Day12 IO  序列化 .递归_递归的概念_注意事项 1.递归:方法的递归调用--它是一种方法调用的方式--方法可以调用其本身 2.注意事项: 1).递归必须要有一个"出口(结束的条 ...

  7. [转载]GBK 汉字内码扩展规范编码表(1.0 版)

    编码表源地址:http://ff.163.com/newflyff/gbk-list/ 编码在线查询:http://www.qqxiuzi.cn/bianma/zifuji.php GBK 汉字内码扩 ...

  8. 扩展ASCII码,不同的国家有不同的字符集。Unicode转换为utf8的规则,utf8没有大小端的问题。超过0xFFFF的Unicode字符WINAPI也无能为力(附各种字符编码表及转换表)good

    一.概念 1,ASCII             ASCII(American Standard Code for Information Interchange),中文名称为美国信息交换标准代码.是 ...

  9. 黑马程序员——JAVA基础之编码表

    ------- android培训.java培训.期待与您交流! --------- 字符编码  字符流的出现为了方便操作字符.  更重要是的加入了编码转换.  通过子类转换流来完成. •  I ...

随机推荐

  1. log4j 2整理

    # Log4j 2最佳实践 #Log4j的1.x版本已经被广泛使用于很多应用程序中.然而,它这些年的发展已经放缓.它变得越来越难以维护,因为它需要严格遵循很老的Java版本,并在2015年8月寿终正寝 ...

  2. winfrom 树勾选

    树勾选 /// <summary> /// 树勾选 /// </summary> /// <param name="sender"></p ...

  3. 微信token验证源码分享(c#版)

    在开发时遇到一个问题: 上线后提交申请微信提示"您的服务器没有正确响应token验证...",我查看日志发现根本就没有接收到来自微信的参数. 后来我又记录了微信请求方式和请求的字符 ...

  4. mysql数据库将表移动到新数据库,或者说更改数据库名字

    ①创建新的数据库(你要改的名字) CREATE DATABASE new_name; ②更改数据库表的名字 RENAME TABLE  old_name.table TO new_name.table ...

  5. 弹出框layer插件

    有时候我们在网页制作中需要引用各种弹出框,弹出框的展现形式多种多样.可以是弹出图片,视频,文字,也可以是弹出图片轮播等形式: 弹出框插件——layer使用方法(其实官方文档中已经介绍的很详细): 下载 ...

  6. 洛谷P1966 火柴排队(逆序对)

    题意 题目链接 Sol 不算很难的一道题 首先要保证权值最小,不难想到一种贪心策略,即把两个序列中rank相同的数放到同一个位置 证明也比较trivial.假设\(A\)中有两个元素\(a, b\), ...

  7. centOs升级

    因为军佬放弃制作Centos7的网络重装包,又Centos7的安装引导和6有较大区别所以,选择曲线救国(技术不行,只能这样乱搞)前文:Centos6.9一键重装包https://ppx.ink/net ...

  8. 日期函数new Date()浏览器兼容性问题

    项目上与时间相关的地方特别多,与时间格式相关都使用了moment.js轻量级日期处理库,在开发中出现了几次浏览器兼容性问题,所以总结一下new Date()和moment.js在各大浏览器中兼容性问题 ...

  9. HTML表单(form)的“enctype”属性

    Form元素的语法中,EncType表明提交数据的格式 属性值: application/x-www-form-urlencoded:在发送前编码所有字符(默认) multipart/form-dat ...

  10. 打杂程序员之nginx服务配置

    现在公司要在服务器上多加个网站用同一个nginx服务器,而且都是公用80端口. 因为服务器上跑着好几个网站了,所以配置文件配置完成时候要检测一下能不能用,用nginx -t:最好不要直接杀死nginx ...