Tag: binary

将二进制转换为hex到小数

我有二进制数1010 1011.我知道这是hex的AB,我知道A = 10,B = 11十进制。 但是如何从十进制的10和11到最终的171? 用hex我会做的 AB 0xAB = (10 * 16^1) + (11 * 16^0) = 171 我可以用十进制数做类似的事情从10和11到171吗? 基本上,我只是在寻找一种快速的方法来转换任何二进制数而无需计算器。

将长64位十进制转换为二进制

好吧,虽然我仍然遇到问题,但我想要完成的事情相当简单。 这是我的代码: – (NSString*)toBin:(long)dec { long num = dec; NSString *res = [NSString string]; for (long i=63; i>=0; i–) { long div = 1<<i; if ((num&div)==div) res = [res stringByAppendingString:@"1"]; else res = [res stringByAppendingString:@"0"]; } return res; } 这就是我测试它的方式: for (long i=1; i<10; i++) { NSLog(@"%u = %@",i,[self toBin:(long)i]); } 但是,上面的输出是: 1 = 0000000000000000000000000000000100000000000000000000000000000001 […]

-fwrapv做什么?

任何人都可以提供一些代码示例,当使用fwrapv vs编译时,它们的行为会有所不同。 它说–fwrapv应该“假设加法,减法和乘法的带符号算术溢出,使用二进制补码表示包装。” 但每当我尝试溢出时,无论有没有fwrapv,结果都是一样的。

使用带文件的fseek(文件,0,SEEK_END)了解二进制流的未定义行为

C规范有一个有趣的脚注(#268C11dr§7.21.39) “将文件位置指示器设置为文件结尾,与fseek(file, 0, SEEK_END) ,具有二进制流的未定义行为(因为可能是尾随空字符)或具有状态相关编码的任何流不能确定在最初的轮class状态结束。“ 这是否适用于读取文件的二进制流? (从物理设备) IMO,磁盘上的二进制文件只是一个字节的海洋。 在我看来,二进制文件不能具有状态相关的编码,因为它是一个二进制文件。 我对“二进制广泛流”的概念很模糊,如果它甚至可以应用于磁盘I / O. 我看到在串口流上调用fseek(file, 0, SEEK_END)就像一个com端口或stdin可能无法达到真正的结束,因为还没有确定结束 。 从而将问题缩小到物理文件。 [编辑]答案:与老年人(可能直到20世纪80年代后期)的关注。 目前在2014年,Windows,POSIT特定和非异国他人:不是问题。 @Shafik Yaghmour提供了一个很好的参考, 使用fseek和ftell来确定文件的大小是否有漏洞? 。 @Jerry Coffin将CP / M视为二进制文件并不总是具有精确的长度。 (每个wiki 128字节的记录)。 感谢@Keith Thompson的回答。 这一点解释了规范的“(因为可能有尾随空字符)”评论。

C无符号整数的反转位

我正在使用按位运算符将无符号整数转换为二进制,并且当前执行整数&1以检查位是1还是0并输出,然后右移1除以2.但是这些位以错误的顺序返回(反转),所以我想在开始之前反转整数中的位顺序。 有一个简单的方法吗? 示例:所以如果我给了unsigned int 10 = 1010 while (x not eq 0) if (x & 1) output a ‘1’ else output a ‘0’ right shift x by 1 这会返回0101,这是不正确的…所以我想在运行循环之前反转最初的位顺序,但我不确定如何做到这一点?