正数原码补码反码相同
负数求补码
正数原码补码反码相同
负数求补码
位运算符
计算机是二进制的,所有的数据使用二进制来存储。对于每个二进制来说都有原码、反码和补码。计算机存储数据的时候,使用第一位表示数字的正负,0代表正数,1代表负数。计算机存储正数的时候直接存储正数的原码,存储负数的时候存储负数的补码。(为什么存储补码,而不是原码,这个是为了方便进行数学运算,具体不解释了)
正数:原码、反码和补码相同。
负数:
原码(符号位为1)
反码(符号位不变,其余位数取反)
补码(反码+1)
只针对二进制来说的,所以在进行运算之前会转换成二进制,再运算。
正数反码补码原码都一样
负数原码,反码符号位不变、其他位不变,
补码码符号位不变、其他位不变,末尾加1
9
原码:00000000 00000000 00000000 00001001
反码:
00000000 00000000 00000000 00001001
补码:
00000000 00000000 00000000 00001001
-9
原码:10000000 00000000 00000000 00001001
反码:
11111111 11111111 11111111 11110110
补码:
11111111 11111111 11111111 111101101
位运算符
计算机是二进制的,所有的数据使用二进制来存储。对于每个二进制来说都有原码、反码和补码。计算机存储数据的时候,使用第一位表示数字的正负,0代表正数,1代表负数。计算机存储正数的时候直接存储正数的原码,存储负数的时候存储负数的补码。(为什么存储补码,而不是原码,这个是为了方便进行数学运算,具体不解释了)
正数:原码、反码和补码相同。
负数:
原码(符号位为1)
反码(符号位不变,其余位数取反)
补码(反码+1)
只针对二进制来说的,所以在进行运算之前会转换成二进制,再运算。
& 按位与:对应位都是1才是1
| 按位或:对应位有一个1,就是1
~ 按位取反:1变0,0变1
^ 按位异或:对应位不一样才是1
<< 左移(高位抛弃,低位补0)
>> 右移(高位按照符号位补齐,低位抛弃)
>>>无符号右移(忽略符号位,高位补0,低位抛弃)
逻辑运算符
操作数1(boolean) 符号 操作数2(boolean)
有短路&& ||
无短路& |
(二者作用一样)
^异或
!非
7
原码00000000 00000000 00000000 00000111
反码00000000 00000000 00000000 00000111
补码00000000 00000000 00000000 00000111
-7
原码00000000 00000000 00000000 00000111
反码11111111 11111111 11111111 11111000
补码
11111111 11111111 11111111 11111001
1.计算机存储数据的时候,使用第一位表示数字的正负,0代表正数,1代表负数
2.计算机存储正数的时候直接存储正数的原码,存储负数的时候存储负数的补码。
正数:原码,反码和补码相同
负数:原码(符号位为1)
反码(在原码的基础上,符号位不变,其余位数取反)
补码(反码+1)
计算机存储数据的时候,使用第一位表示数字的正负,0代表正数,1代表负数。计算机存储正数的时候直接存储正数的原码,存储负数的时候存储负数的补码。
什么是原码、反码、补码
正数:原码、反码、补码相同
负数:原码(符号位为1)
反码(符号位不变,其余位数取反)
补码(反码+1)
只针对二进制来说的,所以在进行运算之前会转换成二进制,再运算。
&按位与:对应位都是1才是1
|按位或:对应位有一个1,就是1
~按位取反:1变成0,0变成1
^按位异或:对应位不一样才是1
<<左移(高位抛弃,低位补0)
>>右移(高位按照符号位补齐,低位抛弃)
>>>无符号右移(忽略符号位,高位补0,低位抛弃)
0代表正数
1代表负数
正数:原码、反码、补码一样
负数:原码(符号位为1)
反码(符号位不变,其余位数取反)
补码(反码+1)
一个字节占8位
一个int类型
有没有具体点的东西
7
原码 00000000 00000000 00000000 00000111
-7
原码 10000000 00000000 00000000 00000111
反码 11111111 11111111 11111111 11111000
补码 11111111 11111111 11111111