按位与操作符&
33&65的结果是1
33的二进制:100001
65的二进制:1000001
由于按位与的操作要右对齐,且是8位
所以33:00100001 前面补齐了两个0
所以55:01000001 前面补齐一个0
结果-----------------------
       00000001 装换位十进制为1
所以33&65的结果是1问题:
我这样补齐的根据是什么?
33和65是32位整数 装换成二进制是不是应该这样:
33装换为二进制:00000000 000000000 00000000 00100001
65转换为二进制:00000000 000000000 00000000 01000001 
结果为:--------------------------------------------
               00000000 00000000 00000000 00000001到底是怎么计算得来的这个最终结果1啊? 希望高手指点一下。

解决方案 »

  1.   

    33装换为二进制:00000000 000000000 00000000 00100001 
    65转换为二进制:00000000 000000000 00000000 01000001 
    结果为:-------------------------------------------- 
                  00000000  00000000 00000000 00000001 
     
    =======================<<<<======
    从右到左每一位对应的进行与操作
    0& 0 = 0
    0 & 1 = 0
    1 & 1 = 1
    然后不就是结果了么?
      

  2.   

    在计算机中,负数以其正值的补码形式表达。什么叫补码呢?这得从原码,反码说起。 原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。比如 00000000 00000000 00000000 00000101 是 5的 原码。 反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。取反操作指:原为1,得0;原为0,得1。(1变0; 0变1)比如:将00000000 00000000 00000000 00000101每一位取反,得11111111 11111111 11111111 11111010。称:11111111 11111111 11111111 11111010 是 00000000 00000000 00000000 00000101 的反码。反码是相互的,所以也可称:11111111 11111111 11111111 11111010 和 00000000 00000000 00000000 00000101 互为反码。 补码:反码加1称为补码。也就是说,要得到一个数的补码,先得到反码,然后将反码加上1,所得数称为补码。比如:00000000 00000000 00000000 00000101 的反码是:11111111 11111111 11111111 11111010。那么,补码为:11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 11111011 所以,-5 在计算机中表达为:11111111 11111111 11111111 11111011。转换为十六进制:0xFFFFFFFB。 再举一例,我们来看整数-1在计算机中如何表示。假设这也是一个int类型,那么: 1、先取1的原码:00000000 00000000 00000000 000000012、得反码:     11111111 11111111 11111111 111111103、得补码:     11111111 11111111 11111111 11111111 可见,-1在计算机里用二进制表达就是全1。16进制为:0xFFFFFF。
      

  3.   

    你的标题不就说了吗 是按位...一位一位的进行  0& 0 = 0 
      

  4.   

    所谓的补齐就是当两个数转换成二进制后位数不一样的时候进行的。
    上下两种方式其实是一样的。上面只是按需补齐,即将短一点的通过在前面加0补成与长一点的位数一样。
    下面的则是不管37=21都补到32位,反正int也不会超过32位。
    当两个数字都转换成了长度一样的二进制后,按位与。
    Understand?
      

  5.   

    怎么还在这儿纠缠这个问题,有这时间你去看看《计算机原理》就什么都明白了...整型数的位数由计算机决定...编程语言只是根据需要定义计算机可以处理的类型,有长有短是根据需要定的,太长浪费资源...33最少需要6bit存储65最少需要7bit存储,所以它们最少是8位整型数,但是也可以是16位、32位、64位、128位等等...而.NET默认的整型数类型之所以是Int32,是因为目前32位计算机是主流,32位计算机中处理32位整型数效率最高...千万不要再接着问为什么是8位、16位而不是5位、10位了...你连这点基础知识都没有就想走程序员这条路如果不补习基础是不可能走多远的...踏踏实实去补习基础吧...
      

  6.   

    那是不是这样 在cpu可能的情况下 由于33是6bit 65是7bit  他只在33的前面加一个0
    而不是在前面加那么多的0  
    还有int32 是32位的  占用的资源是不是就是32位呢?
      

  7.   

    cpu处理还是按照他的类型来的,32位就按32位的处理。
    33,65在它看来都是32位的如果是int型。
      

  8.   

    按位与操作符& 
      就是同一则一了.
    计组,,,,
      

  9.   


    楼主的疑惑是在这里LemIST 已经回答了:cpu处理还是按照他的类型来的,32位就按32位的处理。 
    33,65在它看来都是32位的如果是int型。