关于上一篇细学C++之位运算符中,也许会有许多人不理解为什么【1111111111110101 ==>-11】,这个-11是怎么来的呢,这一篇为您揭晓。
这就涉及到了二进制转换为十进制的问题,这个大家应该是很熟的,毕竟在高中或者大学都是有教学的,但是在计算机中的二进制,是要更深入一点,我们将这种转换称为计算补码。
在计算机中计算补码有两种情况:
1.对正数
对于正数来说,就是我们常见的二进制转换为十进制的计算,直接按位计算权重和,如下图

对于01010这个二进制码从右往左按照从0开始递增的计数操作壹壹对应作为其下标,后用对应位置上的位(基本上是1)乘以2的下标次方,将它们的和相加就得到了该二进制的补码
2.对负数

本文详细介绍了C++中二进制补码的概念,包括正数和负数的补码转换。对于正数,补码即为常规的二进制转十进制方式;而对于负数,补码是保留符号位,其余位取反再加1。文章还补充了右移运算时的逻辑右移和算术右移的区别,提醒避免对有符号数进行右移操作。
最低0.47元/天 解锁文章
1059

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



