第一篇Blog
本人第一个博客,以后会经常写(此时的我就像戏台上的老将军),以免第二次犯同样的错误。因为考研的原因,好久没有coding了,略感生疏。疯玩了十几天,决定拿起书本,扎实地重新看一遍专业书。
位运算符
从开始学习编程起,就不是很注重位运算,因为觉得可以用别的方法代替。后来发现有些东西用位运算处理更有效率。这里主要写以下几个位运算符:
- 按位取反
- 左移
- 右移
按位取反
为了便于理解以byte数据类型作为例子。
127: 01111111
~127:10000000
即~127的值为-128;
同理,~-128的值为127;
(在数字层面的表现为:取相反数后减一)
左移
二进制数向左移一位,空缺填0;
特别注意 左移是有符号的,如果左移后符号位变化,会导致数据类型的改变。
例如:byte类型的127左移一位后会变为int类型的254;
24: 00011000
24<<1:00110000
即24<<1的值为48;
特别的 对于127左移这种情况:
127: 01111111
127<<1:00…011111110
即127<<1的值为254;
同理,-128<<1的值为-256;
右移
二进制数向右移一位,空缺填符号位数字;
24: 00011000
24>>1:00001100
即24>>1的值为12;
同理,-24>>1的值为-12;