`

黑马程序员-编程基础01-进制

 
阅读更多
------- android培训java培训、期待与您交流! ----------

Java中整数的三种表现形式:

十进制:0-9,逢10进1

八进制:0-7,逢8进1,以0开头表示

十六进制:0-9,A-F,逢16进1,以0x开头表示


在计算机中二进制数的表现形式:

正的二进制数的最高位为0,负的二进制数的最高位为1,由此可知,计算机中二进制数的最高位是符号位。

在计算机中如果用二进制表示负数,首先要将这个数的正数的二进制表现形式取反,然后再加1

这里拿Java中的byte(1字节-->8位)举例,如:

01111-1111---> 127(这个正数的二进制表现形式)

如果要表示-127,首先对127取反

0111-1111 ---> 1000-0000 

然后再加1

1000-0000 ---> 1000-0001

如果要得到这个负的二进制数的正的二进制数的表现形式,要将这个负的二进制数取反,然后再加1


数据类型强转:

这里还是拿Java中的byte(1字节-->8位)举例,如:

1. byte b = 127;    b = (byte) b + 1;   b=?

    0000-0000-0111-1111---> 127(首先在运算前会提升数据类型为int,这里为了书写方便,以short代替)

  +0000-0000-0000-0001↴

  =0000-0000-1000-0000 ---> 这时的结果为128,但是对结果进行了强转,导致前8位丢失,出现下面的情况

  =                 1000-0000 ---> 因为在计算机中二进制数的高位为符号位,这里为1,所以它是负数(-128),                                                                  然后对其执行下面的操作

  =                 0111-1111 ---> 首先对其进行取反

  +                 0000-0001 ---> 再对其加1

  =                 1000-0000 ---> 这就是127+1再强转为byte在计算机中的二进制表现形式,对应十进制数-128


二进制移位:

<<(左移):被操作数乘以2的移动位数次幂(3 << 3 --> 3 * (2*2*2) --> 24)↴

             0000-0000-0000-0011  << 3(左移3位后) ↴

             0000-0000-0001-1000 ---> 24

>>(有符号右移,高位按原先高位值来补):被操作数除以2的移动位数次幂(-12 >> 2 --> -12 / (2*2) --> -3)↴

             0000-0000-0000-0000-0000-0000-0000-1100  ---> 12 

             1111-1111-1111-1111-1111-1111-1111-0011  ---> 取反 

            +0000-0000-0000-0000-0000-0000-0000-0001 ---> +1 

             1111-1111-1111-1111-1111-1111-1111-0100  ---> -12(得到-12在计算机中的二进制表现形式) 


             1111-1111-1111-1111-1111-1111-1111-1101  << 3 (右移2位后) ---> -3 ↴

             0000-0000-0000-0000-0000-0000-0000-0010  ---> -3 (得到-3在计算机中的二进制表现形式

             0000-0000-0000-0000-0000-0000-0000-0001  ---> +1 

             0000-0000-0000-0000- 0000-0000-0000-0011  ---> 3


>>>(无符号右移,高位补0):被操作数除以2的移动位数次幂(-12 >> 2 --> -12 / (2*2) --> 1073741821)↴

             0000-0000-0000-0000-0000-0000-0000-1100  ---> 12 


             1111-1111-1111-1111-1111-1111-1111-0011  ---> 取反 

            +0000-0000-0000-0000-0000-0000-0000-0001 ---> +1 

             1111-1111-1111-1111-1111-1111-1111-0100  ---> -12 (得到-12在计算机中的二进制表现形式) 


             00111111-1111-1111-1111--1111-1111-1101  <<< 3 (右移2位后,前两位为0,变成了正数) ---> 1073741821

------- android培训java培训、期待与您交流! ----------   
详细请查看:http://edu.csdn.net/heima/
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics