黑马程序员技术交流社区
标题:
对于视频里面讲到高四位和低四位进行换位不懂???
[打印本页]
作者:
张庚
时间:
2013-2-3 12:27
标题:
对于视频里面讲到高四位和低四位进行换位不懂???
本帖最后由 张向辉 于 2013-2-6 14:34 编辑
class OperateTest2
{
public static void main(String[] args)
{
/*
对一个整数的最后一个字节,高四位和低四位进行换位。
int num = 0101-1100 & 255;
1100-0101
61 = 0011-1101
1101-0011 = 211
*/
int num = 61;
int n1 = num & 15;//低四位
int n2 = num & (15<<4);//高四位
int n = n1<<4 | n2>>>4;
System.out.println("n="+n);
}
}
这个感觉那时候听的云里雾里的,现在也不怎么看到饿懂了 那个看懂的给解释下啊 谢谢!!
就是第三天的视频里面讲到得。
作者:
王昕
时间:
2013-2-3 14:26
本帖最后由 王昕 于 2013-2-3 14:29 编辑
num & 15
15二进制是 0000 1111
一个数,比如61和它进行“与”运算,高四位必然清零,低四位保持不变。保存在n1里,是0000 1101。
15<<4
15左移四位是 1111 0000
那么就是61的低四位被清零,变成0011 0000。
下面 n1 左移4位,右边补0,n2 右移4位,左边补0。
它俩“或”一下,就是拼在一起了,因为一个高四位全0,另一个低4位全0,某些位和0000进行“|”运算,结果就是它本身没边。
其实就是一个数的某些位和 0 与一下 就会被清零,和 0 或一下 就等于没变。这程序就是分别把高四位和低四位用“与”清零,然后移位,再用“或”拼在一起。这个过程你要用二进制字节来思考,不用管它高四位或者低四位被清零以后十进制变成了多少。
作者:
dzr19850306
时间:
2013-2-6 14:34
换位操作是通过将低位的数值取出来,然后再将高位的数值取出来,最后ABCD EFGH 变成 EFGH ABCD.
2进制数具有一个特点,与1为原来数据,交0为0.所以、00001111 ABCDEFGH=0000efgh,11110000.ABCDEFGH=abcd0000
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2