首页 > 编程知识 正文

计算机补码原码转换(原码反码补码转换例题)

时间:2023-05-03 08:15:31 阅读:93547 作者:3829

ps :这些都是本人原创总结的笔记本,欢迎大家一起学习。

这是底层的重点,以下各级规定必须背下来

二进制的最高有效位是符号位。 0表示正数,1表示负数的正数原码。 反码和补码都一样。 负数的反码=其原码的位不变。 其他位取反(0- 1,1-0 )负数的补数=其反码1,负数的反码=其补数-10的反码。 补数都是0java没有无符号数。 换言之,java中的数都是有符号的。 计算机运行时都是互补运行的。 查看其执行结果时,原代码

四个位运算符

的位数和: 2位数均为1,结果为1。 否则,0位数或|:2位数中1位数为1,结果为1。 否则,0位数异或^ :一个是0,一个是1,结果是1。 否则,每0位数取反~:0-1,1 -。

的补数:

0000 0000 0000 0000 0000 0000 0000 0010

的补数:

0000 0000 0000 0000 0000 0000 0000 0011

23个补数:

0000 0000 0000 0000 0000 0000 0000 0010

23个源代码:

0000 0000 0000 0000 0000 0000 0000 0010

~-2=?

-2的反码:

1111 1111 1111 1111 1111 1111 1111 1101

-2的补数:

1111 1111 1111 1111 1111 1111 1111 1110

采取反对意见:

0000 0000 0000 0000 0000 0000 0000 0001

源代码:

0000 0000 0000 0000 0000 0000 0000 0001

~2=?

的补数:

0000 0000 0000 0000 0000 0000 0000 0010

采取反对意见:

1111 1111 1111 1111 1111 1111 1111 1101

添加代码并翻转:

1111 1111 1111 1111 1111 1111 1111 1100

将反码还原为原始代码:

1000 0000 0000 0000 0000 0000 0000 0011

2|3=?

2的补数:

0000 0000 0000 0000 0000 0000 0000 0010

的补数:

0000 0000 0000 0000 0000 0000 0000 0011

或运算:

0000 0000 0000 0000 0000 0000 0000 0011

将补数反转回原始代码:

0000 0000 0000 0000 0000 0000 0000 0011

2^3=?

的补数:

0000 0000 0000 0000 0000 0000 0000 0010

的补数:

0000 0000 0000 0000 0000 0000 0000 0011

异或运算:

0000 0000 0000 0000 0000 0000 0000 0001

举例

可以直接使用(m1)==1? 奇数:偶数即可得到结果*,例如:

布尔纳=(31 )==1//真

布尔型态=(41 )==1//假

不使用临时变量交换两个整数值:

int a=3,b=4

a=a^b

b=a^b //b=3

a=a^b //a=4

原理:

异或0具有保留的特征,1010^0000=1010;

异或1具有反转的特征,1010^1111=0101;

可以从这里导出:

乙^ (甲^乙)=甲

甲^ (乙^ )乙^乙) )=乙

位运算的妙用

算术右移:下位溢出。 不变更编码比特,用编码比特来弥补溢出的高位比特。 算术左移(符号位不变,低位左移补0逻辑右移)也称为无符号右移,低位溢出高位补0int a=12; 相当于一半2/2

int a=12; 相当于1*2*2

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