十进制数在内存中二进制数是如何得到的?

发布于 2022-09-11 17:31:48 字数 378 浏览 23 评论 0

输出转换后的十进制数在内存中的每一位二进制数(共四个字节,每个字节以空格隔开)
十进制数: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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

神也荒唐 2022-09-18 17:31:48

建议买本计算机原理课本从头学

撩心不撩汉 2022-09-18 17:31:48

其实代码好解释,num>>i代表将num的二进制数右移i位,给你个例子

例如num =1011也就是十进制的11,右移1位就是0101,右移20010,右移30001,这就是>>的意思

将移动的结果和0x1&运算,因为0x1相当于二进制的00...01,只有末尾有个1,所以那个for循环,相当于是取num的所有二进制位,例如第一次右移31位,也就是将最高位移动到了末尾,然后和1进行&,就相当于把最高位取出来了,然后右移动30位,相当于把次高位移动到了末尾,同理......然后打印出来,每打印8位,输出一个空格。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文