黑马程序员技术交流社区

标题: 用更简单的方法实现输出基本数据类型的二进制位 [打印本页]

作者: 寇亮    时间: 2014-8-7 20:42
标题: 用更简单的方法实现输出基本数据类型的二进制位
本帖最后由 寇亮 于 2014-8-12 23:58 编辑

最近在自学C,总结了一些内容跟大家分享,希望能共同进步。
一、输出整数的二进制位

  1. void printBinary(int number)
  2. {
  3.         int temp = (sizeof(number) << 3) – 1;
  4.         while(temp >= 0)
  5.         {
  6.                 int value = number>> temp & 1;
  7.                 printf(“%d”, value);
  8.                 temp--;
  9.         }
  10. }
复制代码



作者: 寇亮    时间: 2014-8-7 20:44
本帖最后由 寇亮 于 2014-8-12 23:59 编辑

二、输出基本数据类型的16进制位表示:

  1. #include<stdio.h>
  2. typedef unsigned char *byte_pointer;
  3. void show_bytes(byte_pointer start,int len)
  4. {
  5.     int i;
  6.     for(i=0;i<len;i++)
  7.         printf("%.2x ",start);
  8.     printf("\n");
  9. }
  10. void show_int(int x)
  11. {
  12.     show_bytes((byte_pointer)&x,sizeof(int));
  13. }
  14. void show_short(short x)
  15. {
  16.     show_bytes((byte_pointer)&x,sizeof(short));
  17. }
  18. void show_float(float x)
  19. {
  20.     show_bytes((byte_pointer)&x,sizeof(float));
  21. }
  22. void show_pointer(void *x)
  23. {
  24.     show_bytes((byte_pointer)&x,sizeof(void *));
  25. }
复制代码




作者: 寇亮    时间: 2014-8-7 20:45
本帖最后由 寇亮 于 2014-8-7 22:14 编辑

第二种方法更加简便实用,而且没有多余的运算。能真实的反映出变量在内存中的存储属性。
作者: 寇亮    时间: 2014-8-8 09:04
本帖最后由 寇亮 于 2014-8-8 09:10 编辑

少写了一句,现已补全。谢谢提醒
作者: 天真    时间: 2014-8-8 10:02
加个好友一起学C吧  
作者: 寇亮    时间: 2014-8-8 12:53
天真 发表于 2014-8-8 10:02
加个好友一起学C吧

怎么加好友?不太懂论坛操作呢
作者: 卡哇伊    时间: 2014-8-8 14:53
好办法 不过  这个 貌似 还有其他做法
作者: 王绍明    时间: 2014-8-22 13:36
你刚学,技术分怎么这么高




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2