使用位运算显示二进制数

  最近学习《C Primer Plus》位操作部分,结合书上的编程实例来巩固这部分知识点。  

 1 //使用位运算显示二进制数
 2 #include<stdio.h>
 3 char *itobs( int, char*);                //integer to binary string
 4 void show_bstr( const char*);
 5 main()
 6 {
 7     char bin_str[8 * sizeof(int) +1];
 8     int number;
 9     while(scanf("%d", &number)==1)
10     {
11         itobs( number, bin_str);
12         printf("%d is ", number);
13         show_bstr( bin_str);
14         putchar(‘\n‘);
15     }
16 }
17 char *itobs( int n, char *ps)
18 {
19     int i;
20     static int size = 8 * sizeof(int);
21     for( i=size-1; i>=0; i--, n>>=1)
22         ps[i]=(1&n)+‘0‘;                    //01&n就是n的最后一位的值(1&n也行),该值为0或1。字符数组需要字符‘0‘或‘1‘,加上‘0‘的ASCII编码可以完成转换
23     ps[size]=‘\0‘;
24     return ps;
25 }
26 //四位一组显示二进制字符串
27 void show_bstr(const char *str)
28 {
29     int i=0;
30     while(str[i])
31     {
32         putchar(str[i]);
33         if(++i%4==0  &&  str[i])
34             putchar(‘  ‘);
35     }
36 }
时间: 2024-09-28 16:22:17

使用位运算显示二进制数的相关文章

NOJ---页面无法显示--位运算

好吧 先解决下 -- 页面无法显示 该死的Oj 不知道为什么突然无法打开了 =-= 我也就忘记题号了 主要现在这场乌拉圭-哥伦比亚 刚开始  忙里偷闲 把这题来写了 明天 不对 应该是今天 不知道要睡到什么时候 =-= 先来贴下关于位运算的操作要求及解释--------我好像上次贴过 我忘记了 orz 位运算是指按二进制进行的运算.在系统软件中,常常需要处理二进制位的问题.C语言提供了6个位操作 运算符.这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与lon

【位运算】求二进制数中1的个数

1 import java.util.Scanner; 2 3 /** 4 * 功能:位运算,求二进制数中1的个数 5 * 思路:通过每次右移一位,并与1进行与运算,判断该位是否是1,最后统计个数. 6 */ 7 public class Main4 { 8 9 public int count(int num) { 10 11 if (num <= 0) { 12 return 0; 13 } 14 15 int count = 0; 16 17 while (num > 0) { 18 i

Java基本数据类型与位运算

Java基本数据类型与位运算 >>赋值运算符 赋值使用操作符“=”.它的意思是“取右边的值(即右值),把它复制给左边(即左值)”.右值可以是任何 常数.变量或者表达式 (只要它能 生成 一个值就行).但左值必须是一个明确的,已命名的变量.也就是说,必须有一个物理空间可以存储等号右边的值.分类 基本数据类型 与 类数据类型 的不同1. 对基本数据类型的赋值是很简单的.基本数据存储了实际的数值,而并非指向一个对象的引用,所以在为其赋值的时候,是直接将一个地方的内容复制到了另一个地方.2. 但是在为

Java 位运算

一,Java 位运算 1.表示方法: 在Java语言中,二进制数使用补码表示,最高位为符号位,正数的符号位为0,负数为1.补码的表示需要满足如下要求. (l)正数的最高位为0,其余各位代表数值本身(二进制数). (2)对于负数,通过对该数绝对值的补码按位取反,再对整个数加1. 2.位运算符 位运算表达式由操作数和位运算符组成,实现对整数类型的二进制数进行位运算.位运算符可以分为逻辑运算符(包括~.&.|和^)及移位运算符(包括>>.<<和>>>). 1)左

位运算 使用技巧

位运算简介及实用技巧(一):基础篇 什么是位运算? 程序中的所有数在计算机内存中都是以二进制的形式储存的.位运算说穿了,就是直接对整数在内存中的二进制位进行操作.比如,and运算本来是一个逻辑运算符,但整数与整数之间也可以进行and运算.举个例子,6的二进制是110,11的二进制是1011,那么6 and 11的结果就是2,它是二进制对应位进行逻辑运算的结果(0表示False,1表示True,空位都当0处理): 110 AND 1011 ---------- 0010  -->  2 由于位运算

简简单单学会C#位运算

一.理解位运算 要学会位运算,首先要清楚什么是位运算?程序中的所有内容在计算机内存中都是以二进制的形式储存的(即:0或1),位运算就是直接对在内存中的二进制数的每位进行运算操作 二.理解数字进制 上面提到了二进制,除了二进制,我们还有很多的进制,下面列举一些常见的进制 10进制数:0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 (每位满10进1,同时低位补0)2进制数:00000,00001,00010,00011,00100,00101

java位运算大全

位运算因为是CPU直接支持的操作指令,也是基于二进制的操作,所以具有相当高的效率,在一些场合,合理应用位运算将具有很高的性能.通常在一些加密算法,图型算法中都会使用到位运算. Java 位运算符 位 运 算 符 用 来 对 二 进制 位 进 行 操 作 ,Java中提 供 了 如 下所 示 的 位 运 算符 : 位 运 算 符 (>>,<<,>>>,&,|,^,- ) ,位运 算 符 中 ,除 - 以 外 ,其余 均 为 二 元 运 算 符 . 操 作 数

位运算简介及实用技巧(二):进阶篇(1)[转]

位运算简介及实用技巧(二):进阶篇(1) 原贴链接:http://www.matrix67.com/blog/archives/264 =====   真正强的东西来了!   ===== 二进制中的1有奇数个还是偶数个    我们可以用下面的代码来计算一个32位整数的二进制中1的个数的奇偶性,当输入数据的二进制表示里有偶数个数字1时程序输出0,有奇数个则输出1.例如,1314520的二进制101000000111011011000中有9个1,则x=1314520时程序输出1.var   i,x,

结构体、共用体和位运算

1.C语言结构体的定义和使用 在实际问题中,一组数据往往具有不同的数据类型:例如在学生信息登记表中,姓名为字符型,学号为整型或字符型,年龄为整型,性别为字符型,成绩为整型或实型.因为数据类型不同,显然不能用一个数组来存放. 在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据.定义结构体的一般形式为: struct 结构体名{ 成员列表 }; 每个成员都是结构体的组成部分,有名字,也有数据类型,形式为: 类型说明符 成员名; 例如用结构体来表示学生信息: struct stu{ c