输出转换后的十进制数在内存中的每一位二进制数(共四个字节,每个字节以空格隔开)十进制数:122二进制数:00000000 00000000 00000000 00001100代码:for (int i = 31; i >= 0; i--){ std::cout << ((num >> i) & 0x1);//num 是十进制数
if (i % 8 == 0)
{ std::cout << ' ';
}
}上面代码的是什么意思?可以详细解释一下吗?如果涉及到反码知识,也请详细解释一下?为什么这样就可以内存中的二进制数了,谢谢了!
2 回答
慕妹3242003
TA贡献1824条经验 获得超6个赞
其实代码好解释,num>>i代表将num的二进制数右移i位,给你个例子
例如num =1011也就是十进制的11,右移1位就是0101,右移2位0010,右移3位0001,这就是>>的意思
将移动的结果和0x1做&运算,因为0x1相当于二进制的00...01,只有末尾有个1,所以那个for循环,相当于是取num的所有二进制位,例如第一次右移31位,也就是将最高位移动到了末尾,然后和1进行&,就相当于把最高位取出来了,然后右移动30位,相当于把次高位移动到了末尾,同理......然后打印出来,每打印8位,输出一个空格。
- 2 回答
- 0 关注
- 1092 浏览
添加回答
举报
0/150
提交
取消
