码迷,mamicode.com
首页 > 编程语言 > 详细

java原码,反码,补码 位运算

时间:2020-03-29 21:14:21      阅读:83      评论:0      收藏:0      [点我收藏+]

标签:换算   原码   负数   等于   bsp   java   相同   二进制   总结   

原码是什么?
反码是什么?
补码是什么?

原码:
正数:正数转换为二进制位就是这个正数的原码
负数:负数的绝对值转换成二进制位然后在高位补1就是这个负数的原码

int 2 原码:
00000000 00000000 00000000 00000010
int -2 原码:
10000000 00000000 00000000 00000010

00000000 00000000 00000000 00000011 # 3原码
10000000 00000000 00000000 00000011 # -3原码

 

反码:
正数的反码就是原码
负数的反码等于原码除符号位以外所有的位取反

00000000 00000000 00000000 00000011 #3反码
11111111 11111111 11111111 11111100 # -3反码


补码:
正数的补码与原码相同,
负数的补码为 其原码的反码,然后最低位加1

00000000 00000000 00000000 00000011 #3补码
11111111 11111111 11111111 11111101 # -3反码


总结:
正数的原码, 反码, 补码 都一样.
负数的原码, 反码, 补码 都不一样.
符号位 + 二进制位

int -1的原码,反码,补码:
10000000 00000000 00000000 00000001
11111111 11111111 11111111 11111110
11111111 11111111 11111111 11111111

位运算:
正数有符号右移: 高位通通补0
负数有符号右移: 换算成补码后右移,高位通通补1
无符号右移: 无论正数,负数, 高位通通补0, 所以出现负数变成正数, 依然是补码运算,只是高位补0.

-1 >> 1 # -1
-1 >>> 32 # -1
-1 >>> 31 # 1

 

java原码,反码,补码 位运算

标签:换算   原码   负数   等于   bsp   java   相同   二进制   总结   

原文地址:https://www.cnblogs.com/smileblogs/p/12594778.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!