Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;整数级联 我有C++的整数,还有三个变量。我想把它的第一个二进制数字放在第一个变量中,第二个放在第二个变量中,其余的放在第三个变量中_C++_Binary_Concatenation - Fatal编程技术网

C++;整数级联 我有C++的整数,还有三个变量。我想把它的第一个二进制数字放在第一个变量中,第二个放在第二个变量中,其余的放在第三个变量中

C++;整数级联 我有C++的整数,还有三个变量。我想把它的第一个二进制数字放在第一个变量中,第二个放在第二个变量中,其余的放在第三个变量中,c++,binary,concatenation,C++,Binary,Concatenation,知道怎么做吗?对我来说,这实际上有点像一个编码作业。不管你想要什么数字,基本的想法是将这个变量除以1,10,100,等等,并将结果保持为整数,然后通过进一步除以w/10得到余数。示例:578/10->57.8->57->57%10->7 对于编码,只需DIY。假设32位整数: unsigned int val = ...; unsigned int a, b, c; a = val & (1U << 31); // = 10000000 00000000 00000000

知道怎么做吗?

对我来说,这实际上有点像一个编码作业。不管你想要什么数字,基本的想法是将这个变量除以1,10,100,等等,并将结果保持为整数,然后通过进一步除以w/10得到余数。示例:578/10->57.8->57->57%10->7

对于编码,只需DIY。

假设32位整数:

unsigned int val = ...;
unsigned int a, b, c;

a = val & (1U << 31); // = 10000000 00000000 00000000 00000000
b = val & (1U << 30); // = 01000000 00000000 00000000 00000000
c = val & 0x3fffffff; // = 00111111 11111111 11111111 11111111
unsigned int val=。。。;
无符号整数a,b,c;

a=val&(1U“第一个二进制数字”不明确。您是指最低有效位还是最高有效位?32位无符号整数x的最高有效位类似于:msb=(1谢谢,那么如何获取第二个最高有效位?(我在注释中编码失败…)@Tring-Hmm…不知道…也许用30而不是31?Mod/div不是实现这一点的方法。对于2的幂,你需要and和shift。对于单个位,你需要屏蔽。哦,二进制数字…sry我的第一篇文章bloops..xd任何有能力的编译器都知道如何处理除法和Mod by 2。不需要手动优化它。唯一的原因是选择一种方法而不是另一种方法是可读性。如果您确实对位感兴趣,最好使用位运算来处理位域。除法和mod用于算术。更不用说,除以2得到的是LSB,而不是MSB。