Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <math.h>
- #include <stdlib.h>
- #pragma warning(disable:4996)
- #pragma warning(disable:4244)
- #define N 16
- void shen(int b){
- char a[N];
- int i;
- for (i=N-1; i>=0; i--, b/=16)
- a[i] = (b%16 < 10) ? b%16+'0' : b%16 - 10 + 'A';
- do{
- i++;
- }while (a[i]=='0');
- printf("0x");
- while (i<N){
- printf("%c",a[i]);
- i++;
- }
- }
- int dv(int b,char a[],int s){
- int i;
- for (i=s-1; i>=0;i--,b/=2) a[i] = b%2;
- return a[s];
- }
- /*
- int rev(char a[],int s){
- char x[8];
- int i;
- for (i=0;i<8;i++) x[7-i]=a[i];
- for (i=0;i<8;i++) a[i]=x[i];
- for (i=8;i<s;i++) x[15-i]=a[i];
- for (i=8;i<s;i++) a[i]=x[i-8];
- return a[s];
- }
- int des(char a[],int s){
- int i,sum=0;
- for(i=s-1;i>-1;i--){
- if (a[i]== 1)
- {
- sum = sum + pow(2,(s-(i+1)));
- }
- }
- return sum;
- }
- */
- int checkbit( int value, int position) { // proverka bita
- int result;
- if ((value & (1 << position)) == 0) {
- result = 0;
- } else {
- result = 1;
- }
- return result;
- }
- int revbit (int x){ // bitovaia
- int d = 0,vr = 0, i = 8;
- while(i<16){
- vr = checkbit(x,i);
- //printf("==%i ",vr);
- vr = vr << (23-i);
- //printf("%i\n",vr);
- d = d | vr;
- i++;
- }
- i=0;
- while(i<8){
- vr = checkbit(x,i);
- //printf("==%i ",vr);
- vr = vr << (7-i);
- //printf("%i\n",vr);
- d = d | vr;
- i++;
- }
- //printf("%i\n",d);
- return d;
- }
- int main (void){
- typedef unsigned int integer_t;
- integer_t n,i;
- char v[N];
- scanf("%i",&n);
- printf("%i = ",n);
- shen(n);
- printf(" = ");
- dv(n,v,N);
- for (i=0;i<N;i++)
- {
- if (i== 8) printf(" ");
- printf("%i",v[i]);
- }
- //!!!!!!!!!!!!!!!
- n=revbit(n);
- printf("\n"); //!!!!!!!!!!!!!!!!
- printf("%i = ",n);
- shen(n);
- printf(" = ");
- dv(n,v,N);
- for (i=0;i<N;i++)
- {
- if (i== 8) printf(" ");
- printf("%i",v[i]);
- }
- printf("\n");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement