打印整型的二进制格式

打印整型的二进制格式
                                    
                                                
马嘉楠
     2008.3.24


一共2个文件:
PrintBinary.java       --- 打印整型的二进制格式

PrintBinaryTest.java ---
测试文件


主要内容:
打印整型的二进制格式

主要功能:
1.   void printBinaryNumber(int x) 
      
打印整型的二进制格式

文件1:PrintBinary.java

package  Common.Utils.DataUtils;

/**
 * 
 * <p>
 * Description: 打印整型的二进制格式
 * </p>
 * <p>
 * Copyright 2006 mjn.
 * </p>
 * 
 * 
@author ma jia nan
 * @Create Date : 2008-02-24
 * @Version : 1.0
 
*/

public class PrintBinary  {
    
/**
     * 打印整型的二进制格式
     * 
     * 
@param x
     * 
@return

     
*/

    
public void printBinaryNumber(int x) {
        
int[] buffer = new int[32
];
        
for (int i = 0, mask = 1; i < 32; i++
{
            mask 
= 1
;
            mask 
= mask <<
 i;
            buffer[i] 
= (mask & x) >>
 i;
        }

        
for (int j = 31; j >= 0; j--{
            System.out.print(buffer[j]);
            
if (j % 8 == 0
)
                System.out.print(
" "
);
        }

        System.out.println(
"");
    }

}



文件2:PrintBinaryTest.java

import  Common.Utils.DataUtils.PrintBinary;

/**
 * 
 * <p>
 * Description: 测试PrintBinary
 * </p>
 * <p>
 * Copyright 2006 mjn.
 * </p>
 * 
 * 
@author ma jia nan
 * @Create Date : 2008-03-24
 * @Version : 1.0
 
*/


public class PrintBinaryTest  {

    
public static void main(String args[]) 
{
        System.out.println(s((
byte100
));
        System.out.println(s((
byte1
));
        System.out.println(s((
byte-1
));

    }


    
private static byte s(byte b) {
        
return new
 test().swap(b);
    }


    
private void p(int x) {
        
new
 PrintBinary().printBinaryNumber(x);
    }


    
/**
     * 交换b二进制形式(8位)的前4位和后4位
     * 
     * 
@param b
     * 
@return

     
*/

    
public byte swap(byte b) {
        
int lowBits = b & 0xF
;
        
int highBits = b & 0xF0
;
        
int result = lowBits << 4 | highBits >> 4
;

        System.out.println(
"/n/nb=" + b + "  0xF=" + 0xF + "  0xF0=" + 0xF0
);
        System.out.print(
"      b  Binary : "
);
        p(b);
        System.out.print(
"    0xF  Binary : "
);
        p(
0xF
);
        System.out.print(
" lowBits(b&0xF) : "
);
        p((b 
& 0xF
));

        System.out.print(
"/n      b  Binary : "
);
        p(b);
        System.out.print(
"   0xF0  Binary : "
);
        p(
0xF0
);
        System.out.print(
"highBits(b&0xF0): "
);
        p((b 
& 0xF0
));

        System.out.print(
"/n   lowBits << 4 : "
);
        p((lowBits 
<< 4
));
        System.out.print(
"  highBits >> 4 : "
);
        p((highBits 
>>> 4
));
        System.out.print(
"    result( | ) : "
);
        p((result));

        
return (byte
) result;
    }


}


 
### 实现 `printf` 输出二进制 尽管 C 语言标准库中的 `printf` 函数不支持 `%b` 这样的格式说明符来直接输出二进制数值[^1],可以通过自定义函数配合 `printf` 来达到目的。 #### 自定义函数实现二进制输出 通过创建一个辅助函数 `Print_Binary` 可以实现在控制台逐位打印整数对应的二进制表示: ```c #include <stdio.h> void Print_Binary(unsigned int x) { if (x > 1) { Print_Binary(x >> 1); } putchar((x & 1) ? '1' : '0'); } ``` 此方法采用递归方式处理每一位并调用 `putchar()` 发送字符到终端显示。对于非零输入值,先对其右移一位再继续递归直到最高有效位被处理完毕;随后依据当前最低位决定输出‘1’还是‘0’。 另一种方案是构建一个字符串作为缓冲区存储转换后的二进制序列,之后利用 `printf("%s", binaryString)` 完成最终呈现[^2]。 #### 使用示例 下面给出一段完整的代码片段用于展示上述两种技术的应用场景: ```c int main() { unsigned int num = 9; printf("Binary representation of %u is ", num); Print_Binary(num); char buffer[33]; // 足够容纳最大无符号整形的二进制串加上终止符'\0' sprintf(buffer, "%u", num); // 此处仅为占位操作 // 填充buffer为num的二进制表示... itoa(num, buffer, 2); // 需要包含<stdlib.h>, 注意某些编译器可能未内置itoa() // 或者手动实现类似的base conversion逻辑 printf("\nAnother way to show the same number as binary string: %s\n", buffer); return 0; } ``` 这段程序首先展示了如何即时计算并立即输出给定数字的二进制形式,接着介绍了怎样预先准备好一个代表该数值二进制表达式的字符串供后续使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值