zoukankan      html  css  js  c++  java
  • C语言十六进制转换成十进制:要从右到左用二进制的每个数去乘以16的相应次方

    #include <stdio.h>
    /*
    十六进制转换成十进制:要从右到左用二进制的每个数去乘以16的相应次方;
    在16进制中:a(A)=10 b(B)=11 c(C)=12 d(D)=13 e(E)=14 f(F)=15
    例如:CE=12*16^1+14*16^0=192+14=206
    */
    
    //右旋转把第一位 放到最后 0x2345 => 0x3452 num左移1位0x3450;即1个16进制位等于4个二进制位 
    //或上 num右移3位0x0002 相当于3*4=12个二进制位
    unsigned short int right(unsigned short int num, int n){
        return (num<<n) | (num>>(sizeof(num)*8-n));
    }
    //左转 0x2345=>0x5234 num左移3位(等于12个二进制位) num右移1位(4个二进制位)
    unsigned short int left(unsigned short int num, int n){
        return ( num << (sizeof(num)*8-n)) | (num>>n);
    }
    int main(void)
    {
        unsigned  short int  num = 0xFA;// 最多4个 0xFABCD 报错
        unsigned  short int  num2 = 0x2345; //short int 短整型占2个字节 共2*8=16个二进制位
         
        printf("您输入的十六进制数:%#x
    ",num2);
        printf("%#x十六进制数转换成十进制为:%d
    ",num2,num2);
         
        printf("该十六进制数占二进制位:%d 个位
    ",sizeof(num2)*8);
    	
    	//0x2345占2个字节 0000 0000 0000 0000 16位
    	
    	printf("%#x右边旋转:%#x
    ",num2,right(num2,4));
    	
    	printf("%#x左边旋转:%#x
    ",num2,left(num2,4));
         
         
        return 0;
    }
    

      

  • 相关阅读:
    关于JVM的一些想法
    hashMap理解以及jdk1.7、jdk1.8其中区别
    各数据库如何实现自增
    dubbo遇坑记录
    mysql建表语句问题
    @Configuration
    生成一个唯一的ID
    门面模式
    关于getClass().getClassLoader()
    元素链
  • 原文地址:https://www.cnblogs.com/wanglijun/p/8476656.html
Copyright © 2011-2022 走看看