有两个变量 int A; int B;
如何在不使用第三方变量的情况下交换它两个的值。
  这是我昨天去一家公司笔试的时候碰到的题。
目前为止我只想到汇编里的堆栈,PUSH POP 
也不知道对不对,大家来看看,想想还有什么办法能实现。
还有一道
int i=12345678;
byte[] bytes=new byte[4];
如何把i保存到bytes数组里,
这题到是不难。只不过面试的时候面试官问我,如果整型变量是9位或者10位呢,
也就是说整型变量的大小是可变的。当时愣在那了。过后想想,如果把整型变量转换成二进制的话应该可以。
OSI七层模型是哪七层,并写出每层对应的协议。
物理层,数据链路层,网络层,会话层,表示层,应用层,传输层。
问题是对应的协议。。
像物理层,,如果不是专门搞硬件的人怎么可能去记那协议。。

解决方案 »

  1.   

    第一个问题, A = A + B, B = A - B, A = A - B,就可以了
      

  2.   

    一:
    A^=B;
    B^=A;
    A^=B;
    二:
    BigInteger bi=BigInteger.valueOf(i);
    byte[] tmp=bi.toByteArray();
    System.arraycopy(tmp,0,bytes,0,tmp.length);
      

  3.   

    很老的问题了,不过很有意思。import java.lang.*;
    import java.io.*;
    import java.util.*;public class swap
    {
          public static void main(String [] args) throws Exception
          {
                 int a, b;
                 System.out.print("请输入a的值:");
                 Scanner read = new Scanner(System.in);
                 a = read.nextInt();             System.out.print("请输入b的值:");
                 b = read.nextInt();             System.out.println("a = " + a + ",  b = " + b);
                 a = a + b; b = a - b; a = a - b;
                 System.out.println("a = " + a +", b = " + b);
          }
    }