帮忙看一上这个高地址与低地址 的例子, 看不懂

帮忙看一下这个高地址与低地址 的例子, 看不懂啊
下面程序输出是多少?

Union U {
  char str[2];
  short int num;
};
int main() {
  U u;
  u.str[0] = 10;
  u.str[1] = 1;
  cout << u.num << endl;
  system("PAUSE");
  return 0;
}
复制代码
     结果为266。对于整数类型,都是低字节存低位,高字节存高位,因此低位是10,高位是1,结果=1*256+10=266。

有哪位能帮我分析一下这个运算过程吗? 看不懂? 
那个 1*256  为什么是乘上256? 这个256 是怎么来的?
 
------解决方案--------------------
不是1*256+1,你都理解错了!具体计算是这样:
char str[2];
首先存放数据10,在str[0]中是这样存放:8位,0000 1010
再是存放1,8位:0000 0001;
10在低位:所以str[2]中的数是这样存放:0000 0001 0000 1010;
u.num=2^8+10=266;