示例代码:
通过按位&把第6位设置为0,可以把小写字母变成大写字母
通过按位|把第6位设置为1,可以将大写字母变成小写字母
- class Demo{
- public static void main(String args[]){
- char ch;
- char dh;
- for(int i=0;i < 10;i++){
- ch = (char)('a'+i);
- System.out.print(ch+":");
- ch = (char)((int)ch & 65503);//65503 二进制 1111 1111 1101 1111 通过按位&把第6位设置为0,可以把小写字母变成大写
- System.out.print(ch +" ");
- dh = (char)('A'+i);
- System.out.print(dh+":");
- dh = (char)((int)dh | 32);//32二进制0001 0000通过按位|把第6位设置为1可以将大写字母变成小写字母
- System.out.print(ch +" ");
- }
- }
- }
--------------------------------------------------------------------------------------------------------------
可以利用按位&显示一个数的二进制
- class ShowBits{
- public static void main(String args[]){
- int t;
- byte val;
- val = 8;
- for(t=128;t > 0;t=t/2){
- if((val & t) != 0){
- System.out.print("1 ");
- }else{
- System.out.print("0 ");
- }
- }
- }
- }
------------------------------------------------------------------------------------------------
可以利用异或^创建一个简单的加密解密程序:一个值与同一个值异或两次,结果就是原值
- class EnCode{
- public static void main(String args[]){
- String msg = "This is a test"; //源字符串
- String en = ""; //加密后的字符串
- String de = ""; //解密后的字符串
- int Key = 88; //密钥
- System.out.println("正常输出:"+ msg);
- for(int i=0;i < msg.length();i++){
- en = en + (char)(msg.charAt(i) ^ Key); // 字符串中的字符按位与key异或
- }
- System.out.print("加密后的:");
- System.out.println(en);
- for(int i=0;i < en.length();i++){
- de = de + (char)(en.charAt(i) ^ Key); // 字符串中的字符按位与key异或
- }
- System.out.print("解密后的:");
- System.out.println(de);
- }
- }
---------------------------------------------------------------------------------------------
一元非~的用法,把操作数的二进制位取反
- class NotDemo{
- public static void main(String args[]){
- int t;
- byte b;
- b = 123;
- for(t=128;t > 0;t=t/2){ //显示123的二进制
- if((b & t) != 0){
- System.out.print("1 ");
- }else{
- System.out.print("0 ");
- }
- }
- System.out.println();
- b = (byte)~b; //按位~
- for(t=128;t > 0;t=t/2){ //~后的二进制
- if((b & t) != 0){
- System.out.print("1 ");
- }else{
- System.out.print("0 ");
- }
- }
- }
- }
------------------------------------------------------------------------------------------------------
位运算符:<<左移,>>右移,>>>无符号右移
- class ShiftDemo{
- public static void main(String args[]){
- int t;
- int b;
- b = 1;
- for(int i=0;i < 8;i++){
- for(t=128;t > 0;t=t/2){
- if((b & t) != 0){
- System.out.print("1 ");
- }else{
- System.out.print("0 ");
- }
- }
- System.out.println();
- b = b << 1; //左移1位
- System.out.println();
- }
- System.out.println("________________");
- b = 128;
- for(int i=0;i < 8;i++){
- for(t=128;t > 0;t=t/2){
- if((b & t) != 0){
- System.out.print("1 ");
- }else{
- System.out.print("0 ");
- }
- }
- System.out.println();
- b = b >> 1; //右移1位
- System.out.println();
- }
- }
- }