zoukankan      html  css  js  c++  java
  • 学习二进制了解计算机的源头

    二进制

    1.什么是二进制?

    • 十进制计数使用10作为基数,二进制使用2作为基数,二进制的位数就是2^n的形式。
      例如:二进制110,首先基数是“2”;坐高右低原则就是“2 1 0”分别对应最左边的“1 1 0”;其实坐高右低就是从右边以0开始然后依次加一,这个是进行幂运算的多少次方的数字。所以这个二进制数转换成我们日常的十进制的计算规则就是:12^2 + 12^1 + 0*2^0;最终结果就是 4 + 2 + 1 = 7;

    2.计算机为什么使用二进制?

    • 二进制的数据表达具有抗干扰能力强、可靠性高的优点;二进制非常适合逻辑运算。
      在计算机世界,1代表真,0代表假,刚好也对应了二进制的0,1。

    3.二进制的位操作

    • 移位操作:
      • 二进制左移一位,就是将数字翻倍。二进制右移一位,就是将数字除以2并求整数商。

    二进制左移<<:110 其实就是一次把数字往左移动一位,最右边补0所以最终就是1100;左移规律是数字的值翻倍;
    二进制右移>>:同上就是把数字往右边移动一位,然后最左边数字看情况;如果是算术右移就要考虑正负数的问题;正负数在计算机里面java实现是看你操作系统位数,最后一位代表正负数的标识;0:代表正数;1:代表负数;所以算术右移我理解就是考虑计算,既然考虑计算也就是考虑正负数的问题;对于负数的算术右移左边是要上1的,对于正数的算数右移左边是上0的;但是对于逻辑右移,不管你是正数还是负数,左边都是上0的;

    • 逻辑操作:
      • "或":参与操作的位中只要有一个是1,最终结果就是1.
      • "与":参与操作的位中必须全部岁1,最终结果才是1,否则就为0.
      • "异或":参与操作的位相同,最终结果就为0,否则为1.

    简而言之

    逻辑或 | : 就是2个二进制数,从右到左,对相同位置的数字进行或运算;或运算就是 全是0才表示0,其余全是1;或顾名思义,只要有真就代表真;

    逻辑与 & : 就是2个二进制数,从右到左,对相同位置的数字进行与运算;与运算就是参与运算数字全1才是1,其余的都是0;与顾明思议,相同的而且都是真才为真;

    逻辑异或 ^: 就是2个二进制数吗,从右到左,对相同位置的数字进行运算;异或运算就是参与运算的数字相同结果为0,其余全为1;异或顾明思议,不同的才为真;

  • 相关阅读:
    Ubuntu apt-get "Hash Sum mismatch" 问题解决方法
    模型压缩相关工作
    bn两个参数的计算以及layer norm、instance norm、group norm
    cascade rcnn论文总结
    c++ 堆和栈以及区别
    c++ 浅拷贝和深拷贝 指针和引用的区别 malloc(free)和new(delete)的区别 重载重写重定义
    c++ 多态,虚函数、重载函数、模版函数
    c++问题整理
    repulsion-loss
    smooth l1
  • 原文地址:https://www.cnblogs.com/liugangjiayou/p/12468904.html
Copyright © 2011-2022 走看看