位运算

作者: 放开那个BUG | 来源:发表于2018-09-23 13:58 被阅读3次

    一般位运算的题目都是神仙题,靠平时的积累。
    一般位运算常见的操作符有:
    & :按位与
    | :按位或
    ^ :按位异或
    ~ :取反
    << :左移右侧补0

    :右移左侧补符号位

    :右移左侧补0

    案例1

    本题既涉及到位运算,又涉及到大数据。







    如果要检查一个URL=a是否在集合里,只需要通过k个哈希函数计算,然后在bitarray中找到相应的位置,如果有一个不为黑,那么就不在集合里。只有所有的都为黑,才在集合里,但是有可能会产生误判。



    布隆过滤器的真实错误率应该这样计算,可以看出,比原来的0.01%还要小。

    案例2


    案例3


    案例4



    这里很zhe'ye'j重要的一点是异或满足交换律和结合律,这也就解释了案例1的情况。

    案例5


    案例6


    public static void main(String[] args){
            //默认的话text应该大于pw
            String text = "我爱北京天安门,哈哈";
            String pw = "123bigbang";
            StringBuffer text_ = new StringBuffer();// 存储加密后的字符串
            StringBuffer textAfter = new StringBuffer();//存储解密后的字符串
            for(int i = 0; i < text.length(); i++){
                text_.append((char)(text.charAt(i) ^ pw.charAt(i % pw.length())));
            }
    
            for(int i = 0; i < text_.length(); i++){
                textAfter.append((char)(text_.charAt(i) ^ pw.charAt(i % pw.length())));
            }
    
            System.out.println("原始字符串:" + text);
            System.out.println("加密后的字符串:" + text_);
            System.out.println("解密后的字符串:" + textAfter);
        }
    

    相关文章

      网友评论

          本文标题:位运算

          本文链接:https://www.haomeiwen.com/subject/kdafoftx.html