~位非运算符笔记记录
一、~位非运算符的写法
1.1 ~常用场景取反数

二、运行规律解析
2.1以负数-10转正为例
2.2 解析规则如下:
* 1、原码:获取转换的二进制数值,为获取绝对值在高位也就是首位(符号位)加1
* 2、反码:对该数值的二进制除首位(符号位)的个位数进行取反
* 3、补码:在反码的基础上末尾处加1
* 4、如补码尾数加1便减一取反码
* 5、反码进行转换
* 6、由二进制转换十进制得到整数
2.3Java实现如下
String base10 = Integer.toBinaryString(-(10+1)); //00001010原码
String num = "";
char[] single = new char[]{'1', '0'};
//反码:11110101 11110101 10001010 32位全
for (int i = 0; i < base10.length(); i++) {
char c = base10.charAt(i);
if (Objects.equals(ZERO,String.valueOf(c))) {
c = single[0];
num += c;
continue;
}
c = single[1];
num += c;
}
System.out.println("32位二进制:"+num+1);
BigInteger bigInteger = new BigInteger(num, 2);
System.out.println(bigInteger.toString());
总结
int值返回的负数二进制是32位二进制数值
这篇博客详细介绍了Java中的位非运算符(~)如何应用于负数,特别是通过实例解析了负数如-10经过位非运算后的转换过程,讨论了其在取反数场景中的应用。
1428

被折叠的 条评论
为什么被折叠?



