c语言中,十六进制用0xFF这样表明,那么8进制和2进制怎么表明?

已举报 回答
c语言中,十六进制用0xFF这样表明,那么8进制和2进制怎么表明?
问在线客服
扫码问在线客服
  • 回答数

    8

  • 浏览数

    2,271

8个回答 默认排序
  • 默认排序
  • 按时间排序

已采纳
C中八进制:0377
对应二进制:11111111 。C语言没有提供二进制表示方法,但可以间接实现。
//测试程序
#includestdio.h
#define LongToBin(n) \
(\
((n 21) & 0x80) | \
((n 18) & 0x40) | \
((n 15) & 0x20) | \
((n 12) & 0x10) | \
((n 9) & 0x08) | \
((n 6) & 0x04) | \
((n 3) & 0x02) | \
((n ) & 0x01) \
)
#define Bin(n) LongToBin(0x##n##l)
int main()
{
int a=Bin(11111111);
printf(%d\t,a);
return 0;
}
取消 评论
二进制:即逢二进一,如:1+1=10
八进制:即逢八进一,如:7+1=10
十进制:即逢二进一,如:9+1=10
十六进制:即逢二进一,如:F+1=10,十六进制数的基数是16,采用的数码是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。其中A-F分别表示十进制数字10-15.
取消 评论
结果就是只取a变量的最低字节表示的值。因为&是“按位与”,即对应位都为1时取1,否则取0。本题中,int a=40;表示a在内存中的二进制是00000000 00000000 00000000 00101000,而十六进制0xff就是11111111,a&0xff就是00000000 00000000 00000000 00101000 & 11111111,结果只取了末字节00101000,它还是十进制40。
取消 评论
c语言里没有类似这样的二进制表示方法
取消 评论
8进制:以零数字开头的数是八进制数,它由0~7的数字组成;
2进制:它由0~1的数字组成。
取消 评论
将40转为二进制,再将那个16进制转为二进制,按位与就可以得到结果
取消 评论
c语言有8进制10进制16进制,唯独没有2进制,如果这是你要做的题目,可能是题目的陷阱。
如果非要表示,那就是在后面加b,如1010b,不过这是汇编的表示方法,不是所有编译器都支持。
取消 评论
红彤彤
取消 评论
ZOL问答 > c语言中,十六进制用0xFF这样表明,那么8进制和2进制怎么表明?

举报

感谢您为社区的和谐贡献力量请选择举报类型

举报成功

经过核实后将会做出处理
感谢您为社区和谐做出贡献

扫码参与新品0元试用
晒单、顶楼豪礼等你拿

扫一扫,关注我们
提示

确定要取消此次报名,退出该活动?