我认为它们的基本操作是操作比特(翻转、移位、反转等...)。
我的问题是我不知道什么时候需要使用它们,而且我不认为我完全理解比特。
我知道一个字节中有8个比特,而且我知道比特只能是 0
或 1
。现在这里是我开始感到困惑的地方...... 我相信数据类型以不同的方式定义比特组合。因此,如果我声明一个 int
,32 个比特将被设置为数字,如果我声明一个 char,则会设置8 个比特,并且该数据类型的比特定义了一个字符。
基于这个想法,在 Java 中我进行了以下基本操作,这让我感到困惑:
int num = 00000010;
System.out.println(num);
这将打印出
8
,如果我这样定义num
:int num = 00000100;
System.out.println(num);
这将打印出64
所以为了练习位运算(只是为了好玩),我尝试了以下代码:
int num = 00000010 << 1;
System.out.println(num);
它打印出16
,而我以为它会将位左移一位并打印64
。
这里发生了什么,我何时需要应用这种位操作方法?
0
开头的int
的含义是表示这个整数是一个八进制数。例如,数字0765
代表的是十进制数501
。如果希望使用十进制表示法,请避免在数字前加0
。 - Sotirios Delimanolis