Changes

Jump to: navigation, search

OOP344-Jason Quan C/C++ Programs & notes-20102

2,076 bytes added, 23:25, 28 June 2010
fixed some of tab spaces in my notes
platform(name , option);
this line will call the function.</p>
 
==decimal to binary with bitwise operators==
 
<p> here's a example of dec to binary using bitwise operator</p>
<pre>
 
#include <stdio.h>
 
void binary(int v, int mask){
 
for(mask;mask>0;mask = mask >>1){
 
printf(“%d”,!!(v & mask)); /*prints 1 or 0, since bitwise operator “&” means: 1 & 1= 1 anything else =0.*/
 
}
 
}
 
int main(){
 
int a;
 
int m;
 
printf(“number:”);
 
scanf(“%d”,&a);
 
m=a>32? 1024:32;
 
binary(a,m);
 
printf(“\n”);
 
return 0;
 
}
 
</pre>
 
<p>
 
the Mask:
 
The length of the mask can be determine by an simple intger for example
 
30= 100000
 
64 =1000000
 
1024= 10000000000
</p>
 
<p>
The number:
 
the number is an plain integer number. But when used with an bitwise operator it become a binary number such as:
 
1 & mask
 
1= 000001
 
mask= 100000
 
Therefore in the loop shifts the mask right 1 to determine if the position contains 1 or 0. If zero output prints zero else one.
 
</p>
 
==set and unset bits==
<p>
While I was studying for the OOP344 test, I created a small program that demonstrates how to set a bit or unset a bit. For example if the number is 1 and the binary is 000001. Therefore if I choose to set the bit 2 the binary will become 000011 and the number will become 3. However if I choose to unset 1 the binary will become 000010. Thus a set and unset bit function has been created. </p>
<pre>
#include <stdio.h>
#define mask 32
void printdata(int v, int m){
for(m;m>0;m = m >>1){
printf("%d",!!(v & m));
}
printf("\n");
}
 
/*set bit to one or zero and output the binary*/
void set(int* v, int num){
*v=((*v)^num); /*0^0=0 and 1^0=1* therefore the operator will set the bit to 1 or 0*/
printdata(*v,mask);
}
 
int main(){
int a;
int m;
do{
printf(" enter number(number>32 to quit):\n");
scanf("%d",&a);
if(a<32){
printdata(a,mask);
printf("the current number is: %d\n",a);
printf("set bit:\n");
scanf("%d",&m);
set(&a,m);
printf("The new number: %d\n", a);
printf("unset bit:\n");
scanf("%d",&m);
set(&a,m);
printf("The new Number: %d\n", a);
}
}while(a<32);
}
</pre>
1
edit

Navigation menu