A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 罗全涛 黑马帝   /  2011-12-27 00:37  /  4020 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 罗全涛 于 2011-12-27 19:51 编辑

byte 8位,int 32位。
1:将1byte变成int,前面添加的24位是1还是0,有什么依据?
2:将4byte变成int,基本思想是什么?
3:将int变成4byte有什么好的方法?

评分

参与人数 1技术分 +1 收起 理由
杨玉揆 + 1

查看全部评分

7 个回复

倒序浏览
哥们,你这个问题不是转换的问题。你应该这样理解。定义一个变量a为int型,是系统为a分配了一个4个字节大小的内存空间(也就是32位),它并不规定是添0或1,只是随即地分配了空间。int只是一个标识符,并不是int代表着4byte。定义要弄清楚哦。应该是int类型的变量具有4byte的空间。
回复 使用道具 举报
  1. class Test
  2. {
  3.         public static void main(String [] args) throws Exception
  4.         {
  5.                 //1.
  6.                 byte b = 8;
  7.                 int a;
  8.                 a = b;
  9.                 System.out.println(a+"..."+Integer.toBinaryString(a));
  10.                
  11.                 //2.4byte->int,同理,int->4byte
  12.                 byte [] buf = {1,2,3,4};
  13.                 int n=0;
  14.                 for(int i=0;i<buf.length;i++)
  15.                 {
  16.                         if(i<3)
  17.                         {
  18.                                 n+=buf[i];
  19.                                 n=n<<8;       
  20.                         }
  21.                         else
  22.                         {
  23.                                 n+=buf[i];       
  24.                         }
  25.                 }
  26.                 System.out.println(n+"..."+Integer.toBinaryString(n));

  27.   }
  28. }
复制代码
回复 使用道具 举报
如果你定义一个变量是byte型,那么系统就给它分配一个字节的空间,如果你定义一个变量为int型,那么系统就给它分配四个字节的空间,把byte提升为int,就又原本的一个字节空间四个字节空间了
回复 使用道具 举报
刘旭 黑马帝 2011-12-27 12:21:13
报纸
本帖最后由 刘旭 于 2011-12-27 12:23 编辑

你这个说的是计算机底层数据表示的形式。二进制数据表示有原码,反码,补码。计算机一般用补码表示。将byte数据(正数)转换成int型时,可以在二进制原码前面加上24个0,然后再按照规则将其转换成补码。加入byte数据为负数,最高位为1.加入将4byte数据按照你说的转换成int型时,得到的是一个新的数据。具体的得看计算机组成原理。

评分

参与人数 1技术分 +1 收起 理由
杨玉揆 + 1

查看全部评分

回复 使用道具 举报
刘旭 发表于 2011-12-27 12:21
你这个说的是计算机底层数据表示的形式。二进制数据表示有原码,反码,补码。计算机一般用补码表示。将byte ...

恩,谢谢了,一直想知道的就是这个额。
回复 使用道具 举报
罗全涛 黑马帝 2011-12-27 19:47:26
7#
本帖最后由 罗全涛 于 2011-12-27 19:47 编辑
monghuan 发表于 2011-12-27 10:56


恩,可以,左移8位,叠加然后在一起左移8位。如果第一个字节直接左移24位,第二个左移16,第三个左移8位,第四个直接加也行。
回复 使用道具 举报
罗全涛 黑马帝 2011-12-27 19:51:00
8#
谢谢大家,本帖结贴。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马