十进制数在内存中二进制数是如何得到的?
输出转换后的十进制数在内存中的每一位二进制数(共四个字节,每个字节以空格隔开)
十进制数:122
二进制数:00000000 00000000 00000000 00001100
代码:
for (int i = 31; i >= 0; i--)
{
std::cout << ((num >> i) & 0x1);//num 是十进制数
if (i % 8 == 0)
{
std::cout << ' ';
}
}
上面代码的是什么意思?可以详细解释一下吗?如果涉及到反码知识,也请详细解释一下?为什么这样就可以内存中的二进制数了,谢谢了!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
建议买本计算机原理课本从头学
其实代码好解释,
num>>i
代表将num的二进制数右移i
位,给你个例子例如
num =1011
也就是十进制的11
,右移1
位就是0101
,右移2
位0010
,右移3
位0001
,这就是>>
的意思将移动的结果和
0x1
做&
运算,因为0x1
相当于二进制的00...01
,只有末尾有个1
,所以那个for
循环,相当于是取num
的所有二进制位,例如第一次右移31
位,也就是将最高位移动到了末尾,然后和1
进行&
,就相当于把最高位取出来了,然后右移动30
位,相当于把次高位移动到了末尾,同理......然后打印出来,每打印8
位,输出一个空格。