2022-11-04 关于按位取反运算符 ~的学习心得

今天学习网课学到了按位取反~运算符的知识。重点,易混淆点如下:

1.运算符~取反  与 数学逻辑中的反码不同。

1的原码: 00000001      -1的原码: 10000001

1的取反:11111110         -1的取反:01111110

1的反码:00000001       -1的反码:111111110

2.负数以补码的方式存储在内存中,但打印使用时的是原码。

-1原码:10000001   内存中存储的-1代码/也就是-1的补码:11111111

3.个人理解的取反过程:


-3按位取反后的输出内容

-3先转换成代码为 1…1111101   取反运算后得:0000……010存储进内存中, 识别为正数直接输出。所以输出即-2


1按位取反后的输出内容

知道 1的代码原码为:0000……0001 

通过~运算按位取反得 111111……10①  

将①存储进内存中,有符号位识别为负数,所以以原码打印输出。

①的原码为 100000……10所以打印结果为-2。


注意:负数原码→反码 ,符号位不变。 

负数反码→补码,反码+1


4.更简单的算法:设(~i)=x  则x+i=-1

你可能感兴趣的:(2022-11-04 关于按位取反运算符 ~的学习心得)