JAVA基础学习
怀着既兴奋又不安的心情的来到学校了,培训了2天,感觉还行吧,呵呵,虽然不是我最想要的老师教我
但是经过这2天学习还是总结了一些自己自学没总结到的知识,就是进制和逻辑运算,一个经常“被我”被忽视的问题,
例子:
-6转二进制
我么要知道负数是如何转换的,盲目的转换是不但出错而且没有效率
负数转换,其实就是这个整数的二进制 “取反” 然后在加1
6的二进制 110 我这里 110只是简写,因为一个字节占8位了,只是后面都是0觉得没必要写
6的原码 : 0 0 0 0 0 1 1 0
6的反码 1 1 1 1 1 0 0 1
然后再用反码加1
1 1 1 1 1 0 0 1
+ 1
-------------------------------------------
1 1 1 1 1 01 0 这个就是-6的二进制数的表示了
然后就是逻辑运算
&运算,相信许多基础不是很好的朋友或者不喜欢进制转换的朋友都不到会用笔算这种题目,都是直接运行出来就知道结果了
虽然这个逻辑运算符再“面试”中还是比较少的
例子: 6&3=???
步骤:
1:将6和3转换成为二进制
2:更具&运算的规定,当两个数都为true才为true,只要一边为false则为false
6的二进制: 110
3的二进制: 011
1 1 0
& 0 1 1
----------------
0 1 0 这也就是6&3=2 二进制10转换10进制为2
接着就是|运算
|运算
例子: 6|3 =??
步骤:
1:先求出它么的二进制数
2:更具 | 运算的规定 只要一边为true,则为true,如果两边都为false 则为false
开始进行运算
1 1 0
| 0 1 1
-----------------------------
1 1 1 6|3=7 111转十进制为7
^运算
例子;6^3=???
步骤:
1:先求出二进制数
2:^运算比较有点意思,当一边为true, 一边为 false 则为true 如果两边都为true或者false 都为false
1 1 0
^ 0 1 1
--------------------------
1 0 1 6^3=5 101转十进制为5
但是里面还隐藏一个非常有趣的问题,也是面试中出现过的问题,如果给你两个变量,在不使用第三个变量名时候来交换它么的数
就可以使用^运算
看例子:
假设 i=10,y=5;
步骤:
1;首先转换为二进制
2:再用^运算进行交互
1 0 1 0
^ 0 1 0 1
-----------------------------
11 1 1 运算第一步: i=i^y; 转换十进制 i=15
1 1 1 1
^ 0 1 0 1
------------------------------
1 0 1 0 细心的朋友在这里就发现转换到1010去了 运算第二不 y=i ^ y; y=1010; 转换十进制 y=10
1 1 1 1
^ 1 0 1 0
------------------
0 1 0 1 最后一步:i=i ^ y; 101转十进制 i=5
经过上面的转换从而达到转换的过程,不借助于第三者,这是一些企业里面经常出的题目,有面试的朋友可以看看哦~
最后就是位移运算符了
<<左移运算符
例子: 3<<2=????
0 0 0 0 0 0 1 1 这是3的二进制
左移过后
0 0 0 0 1 1 0 0 红色的0代表补上去
为什么往后面补0,应为我么左移把高位的0给挤出去了,位数不足向后补0
3<<2=12
再看例外一个例子
3<<3=24
这里其实是有一个规律的:
其实 就是左移几位就是“ 该数据 乘以2的次方
看过程:
3<<2 = 3*2^2=3*4=12
3<<3=3*2^3=3*8=24
很简单吧,呵呵,以前都没想到过呢 - -
还有右移运算,其实右移运算符和左移运算符是一样的,只不过有一些不同
6>>1=
0 0 0 0 0 1 1 0
移动过后
0 0 0 0 0 1 1
高位不足补0,但是没接触过的朋友就不知道了,其实这里呢,它是更具前面的高位是 0 则补 0 是1 则补1
其实这也是有规律的
6>>1=6/2^1=3
6>>2=6/2^2=6/4=1
规律:右移几位数就是 “该数据”除以2的几次方,我么这里右移了 1次和2次所有我么 用当前数据 除以 2的移动位数得出结果
好了,其实还有很多用二进制转换十进制的技巧和规律,足可以丢弃计算器了,只是这里我不好画图,呵呵
几天就写在这里。
本文章只适合初学,如果指点感激不尽,鄙人也欢迎更多朋友交流,本教程为连载教程后期本人还会出一些
JAVA基础知识,从而自己达到巩固
转载注明出处 : http://user.qzone.qq.com/1175141883/infocenter#!app=2&via=QZ.HashRefresh&pos=add
QQ:1175141883
邮箱:base_2@163.com
2013--5---1