将二进制数拆分成数字

Lui*_*eri 0 c split

我知道要获得整数的最后一位数,你可以这样做:

printf("%d\n", 1105 % 10); //It will print 5
Run Code Online (Sandbox Code Playgroud)

现在,我能用二进制数做同样的事情吗?

printf("%d\n", 0101 % 10); //This will print 5 as well
Run Code Online (Sandbox Code Playgroud)

jp-*_*jee 5

使用%2.
二进制数的最低有效位的值为1,因此模2是正确的选择.

但为什么0101会被解释为二进制数?正如ooga指出的那样,前导零使编译器将您的数字解释为八进制数.前导1将被解释为十进制.

毕竟,%2将为您提供1或0(即二进制中数字的最低有效位 - 无论您的输入是二进制,八进制,十进制还是其他).

  • `0101`将被解释为八进制数.试试`printf("%d \n",0101)`. (3认同)
  • 对于那些不想尝试@ ooga的代码片段的人来说,它会打印`65`(因为`101` base 8是64 + 1 = 65),这解释了为什么`0101%10`是'5`. (2认同)