因前段时间有题目关于取反运算的题目,写下自己的解题方式。
解释下相关的知识:
1)取反运算:二进制代码中的每一位,原来是0的改成1,原来是1的改成0。这就叫“取反”。
2)原码:数值的二进制表示方式,在数值的最高位前再添加一位符号位(若数值为正数,则添加符号位为0;若数值为负数,则添加符号位为1)。
3)反码:正数的反码等于原码;负数的反码为符号位不变其余位数取反(0变1 , 1变0)。
4)补码:正数的补码等于原码;负数的补码为该数值的反码加1。
例1:求~(-5)的值。
输入值 | ~(-5) |
原码 | 1101 |
反码 | 1010 |
补码 | 1011 |
取反运算 | 0100 |
补码 | 0100 |
反码 | 0100 |
原码 | 0100 |
输出值 | 4 |
例2:求~5的值。
输入值 | ~5 |
原码 | 0101 |
反码 | 0101 |
补码 | 0101 |
取反运算 | 1010 |
补码 | 1010 |
反码 | 1001 |
原码 | 1110 |
输出值 | -6 |
数值是以读入读出是以通过二进制(原码)转化成其它进制的形式显示出来的,但是数值内存中的存储方式是以补码的形式存储的。
本人第一次发博客,错误的地方还请各位大大纠错