一 数据储存形式
二进制在内存中以补码的形式存在。
补码首位是符号位,0表示该数是正数,1表示该数是负数。
例如:
数值 |
带符号的二进制原码
(首位表示符号位)
|
补码 |
内存中的形式
(
*表示无效位,其数量取决于分配的内存空间)
|
9 | 01001 | 01001 | 0***1001 |
-5 | 1***101 | 1***011 | 1***011 |
二 补码是什么
正数: 补码 = 反码 = 原码
负数: 原码取反 = 反码,反码+1 = 补码
⚠️
运算时: 符号位不变,有效位进行运算!带*号的为无效位。
例如:
原码 | 反码 | 补码 | |
9 | 01001 | 01001 | 0***1001 |
-5 | 1***101 | 1***010 | 1***011 |
三 计算机输出数据的方式
转换
内存中补码 ———————> 原码 (显示)
四 按位取反运算符"~"的原理
按位取反: 将内存中的补码按位取反,包括
符号位!!
例如:
按位取反~ 原码显示
9 ----> 补码 0***1001 ------------> 补码 1***0110 ------------> 1***1010 (-10)
按位取反~ 原码显示
-1 ----> 补码 1***1 -------------> 补码 0***0 -----------> 0 (补码是正数,所以原码也为0)