【发布时间】:2015-02-18 05:49:56
【问题描述】:
在“十进制数”的左移或右移期间,我想要二进制格式而不是十进制的结果。我知道如何将十进制转换为二进制。还有其他方法可以捕获中间二进制值吗?
【问题讨论】:
-
不知道你到底要什么,你能提供一个你想要的例子吗?
-
中间二进制值是什么意思 ???
-
别忘了,大多数计算机只能以二进制运行。十进制输出要求您将二进制表示转换为十进制。也就是说,没有打印二进制文件的标准方法。通过捕获“中间结果”,您的意思是如果您执行
uint16_t x = 0x9876; x >>= 5;,那么您希望看到x >> 1和x >> 2和x >> 3和x >> 4的结果以及最终的x >>= 5;?如果是这样,您将不得不在循环中生成并打印这些中间值。 -
你不是在移动一个十进制数,你是在移动一个一个数字。数字是一个数字,事实上它在内部以二进制表示(可能。谁知道现代 CPU 寄存器是如何制造的?也许它们以 4 为基数工作)仅影响某些操作的速度。数字基数只是外部表示的东西。你想要base 10吗?执行除/模除以 10 循环来计算每个数字,这就是
printf在内部所做的。你想要base 2吗?是一样的,但是有 2 个(这意味着它可以用 shift 和 mask 进行优化)。
标签: c binary printf decimal bit-shift