首页 > 编程知识 正文

c语言中位运算符及其含义,-1的二进制数是多少

时间:2023-05-06 07:47:55 阅读:152712 作者:86

位运算符首先必须知道数字在计算机中的存储格式。 二进制、正数(原码、补数)、负数以补数形式存在。 要进行位运算,首先把数字变换为其原代码形式,然后对反码,再对补数、补数进行位运算,然后把结果变换为反码,再变换为原代码,再变换为十进制。

如果与运算符对应比特都是1,则结果为1,否则为0

publicstaticvoidmain (string [ ] args ) { int n=2; int m=3; //n :0010//m :0011//:---/0010 system.out.println (nm ); //2 } |或运算符如果相应的位都为0,则结果为0,否则为1

publicstaticvoidmain (string [ ] args ) { int n=2; int m=3; //n :0010//m :0011//|:----/0011 system.out.print ln (n|m ); } ^异或运算符如果对应的位值相同,则结果为0,否则为1

publicstaticvoidmain (string [ ] args ) { int n=2; int m=6 //n :0010//m :0110//|:----/0100 system.out.println (n ^ m ); } ~运算符以外乘以1再乘以-1

publicstaticvoidmain (string [ ] args ) {byte p=1; byte p2=-1; //对于正数p,结果为1*-1system.out.println(~p ); //负数p时,结果为1*-1system.out.println(~p2 ); int num=987654321; //- 987654322 system.out.print ln (~num ); }左移运算符按位左移运算符。 左操作数按位向左移动右操作数指定的位数。

mn相当于m乘以2的n次方

对于//2*2的3次方byte b=2 3; system.out.println(b; //16//4: 00000100.//00010000.system.out.print ln (4); //16//-4336010000100|1111101100//11000000|11011111|10100000 system.out.print ln (-4 ); //-32右移运算符按位右移运算符。 左操作数按位向右移动右操作数指定的位数。

mn除以m的2的n次方得到的值

//- 20:10010100|11101011|11101100//-20向右移动三位1111111101|11111100|100000011 system.out.println (-203 ); //-3按无符号位右移位右移补零操作符。 左操作数的值向右移动右操作数指定的位数,移动的空位用零填充。

byte b=-8; //-8替换为int型补码,右移,左高位填零,符号位//b :10001000|11111011|1111111111110.//111111111111111111111111111111111111110

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。