在C语言中,如何将8字节整数除以4个2字节的十六进制数?
我有学校的任务,但IDK如何设计的代码在所有 它需要做的功能是在C语言中,如何将8字节整数除以4个2字节的十六进制数?,c,parsing,C,Parsing,我有学校的任务,但IDK如何设计的代码在所有 它需要做的功能是 输入8字节整数(我认为它必须是无符号long-long类型,因为输入数字必须是0或更多) 将输入的数字分成四个2字节,并将其保存在每个变量中。 假设一个字节是八位字节,八字节整数是64位。然后: 包括和 使用中的uint64\u t定义64位无符号整数变量x 使用scanf(“%”SCNu64,&x)从输入中读取数字 测试scanf的返回值。如果不是1,对于读取的一个数字,打印错误消息并退出程序 数字的四个部分是位位置0、16、3
假设一个字节是八位字节,八字节整数是64位。然后:
和
中的uint64\u t
定义64位无符号整数变量x
scanf(“%”SCNu64,&x)
从输入中读取数字scanf
的返回值。如果不是1,对于读取的一个数字,打印错误消息并退出程序x
右移0、16、32和48,将每个部分移到低位0xffffu
,也可以通过将值分配给只存储16位的uint16\u t
变量来执行此操作uint16\u t
变量中,则可以使用printf(“%”PRIu16,变量)打印它们代码>。如果它们位于其他变量或表达式类型中,则需要不同的转换说明符,如PRIu64
(如果您有uint64\t
表达式)
第3步和第4步没有意义。计算机中的所有整数都以二进制格式存储。无法转换为十六进制或十进制。你可以做的是将值打印为十六进制或十进制,但这不是一个转换。从8中提取2可以通过简单的布尔运算(如掩蔽和移位)轻松完成。你熟悉布尔运算,比如OR,和XOR是吗?@4386427:Re“计算机中的所有整数都以二进制格式存储”:这肯定不是真的。一些整数使用ASCII数字字符存储为十进制数字。有些存储在BCD中。JavaScript以浮点格式存储所有数字,甚至整数。。。我需要的是显示转换值结果,而不是实际转换实际值。ASCII、FP和BCD都是二进制数据的表示/解释。有二进制数据和二进制指令代码,就是这样,真的。