• 二进制和位运算符


    最近,准备学数学基础,so我觉得了解一下二进制和位运算符是很有用的。

    二进制

    先看看度娘怎么说

    二进制是计算技术中广泛采用的一种数制二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。

    其实就是用“1”和“0”来表示数,二进制和十进制的转换也是挺有用的,度娘讲的就挺好。

    (1)二进制转十进制
    方法:“按权展开求和”
    【例】:
    规律:个位上的数字的次数是0,十位上的数字的次数是1,......,依次递增,而十
    分位的数字的次数是-1,百分位上数字的次数是-2,......,依次递减。
    注意:不是任何一个十进制小数都能转换成有限位的二进制数。
    · 十进制整数转二进制数:“除以2取余,逆序排列”(除二取余法
    【例】:
    89÷2 ……1
    44÷2 ……0
    22÷2 ……0
    11÷2 ……1
    5÷2 ……1
    2÷2 ……0
    1
    · 十进制小数转二进制数:“乘以2取整,顺序排列”(乘2取整法)
    【例】: (0.625)10= (0.101)2
    0.625X2=1.25 ……1
    0.25 X2=0.50 ……0
    0.50 X2=1.00 ……1

    位运算符

    OK,接下来看一看位运算符。

    位操作是程序设计中对位模式按位或二进制数的一元和二元操作。  //来自度娘

    定义什么的都不重要,直接上操作

    按位与运算

    按位与运算符"&"是双目运算符。 其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。

    1 9&5
    2    00001001     //9的二进制补码
    3 &  00000101     //5的二进制补码
    4 =  00000001     //1的二进制补码

    按位或运算

    按位或运算符“|”是双目运算符。 其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。
    1 9|5
    2    00001001     //9的二进制补码
    3 |  00000101     //5的二进制补码
    4 =  00001101 

    按位异或运算

    按位异或运算符“^”是双目运算符。 其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。参与运算数仍以补码出现。
    1 9^5
    2    00001001
    3 ^  00000101
    4 =  00001100

    求反运算

    求反运算符~为单目运算符,具有右结合性。 其功能是对参与运算的数的各二进位按位求反。
    1 ~(1001)
    2 = 0110

    [敲黑板]重点来了,最常用的两种位运算符

    左移运算

    左移运算符“<<”是双目运算符。左移n位就是乘以2的n次方。 其功能把“<<”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。(x<<n == x*2^n)

    右移运算

    右移运算符“>>”是双目运算符。右移n位就是除以2的n次方。其功能是把“>>”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。(x>>n == x/2^n)
     
    1 x<<1   //相当于x*2
    2 x>>1   //相当于x/2
    3 x<<2   //相当于x*4
    4 x>>2   //相当于x/4
    5 //……
    6 //以此类推

     

     
  • 相关阅读:
    由于客观原因,暂时学习php两天,然后继续学习.net
    【任务】html编辑器在vs2003下实现
    one bug og webMatrix when create a new file
    数据统一接口?
    安全3S
    一个订单管理页面
    【总结】浪费3个月向.net继续前进
    关于在asp.net中类的继承问题
    【心得】create a data table in webMatrix is very easy!
    Java与.NET谁是未来
  • 原文地址:https://www.cnblogs.com/Alan-Anders/p/10365792.html
Copyright © 2020-2023  润新知